今天開始第四題,尋找兩個有序陣列的中位數。這個題leetcode的標記難度是困難,這一看可把我嚇壞了,之前還沒做過困難的題目。但是進去一看,感覺題目挺簡單的,還小小的高興了一會兒,以為是自己的水平變高了。結果打臉來的太快,漏看了乙個條件,要求時間複雜度為o(log(n+m)),果然還是有難度的。話不多說。來看題目。
題目:給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。
請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。
你可以假設 nums1 和 nums2 不會同時為空。
示例1:nums1 = [1, 3]
nums2 = [2]
則中位數是 2.0
示例2:nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
這個題目的意思很容易明白,就是找到兩個陣列合在一起以後的中位數,如果是奇數,那麼就是中間那個,如果是偶數,則中間兩位加起來除以2;
1)外排法:借助乙個新的陣列,再使用兩個指標指向兩個陣列,比較指標所元素,小的放入新陣列,然後移動指標,時間複雜度為o(m+n),**如下:
1class
solution else
if(index1 19}
20//
根據陣列奇數偶數不同,來計算中位數
21if(num.length % 2 == 0)else26}
27 }
2)上面那種是我最開始做出來的,雖然通過了測試,但是時間複雜度並沒有達到o(log(m+n)),但是第二個方法暫時還沒有想出來,等以後再補上,如果大家有想法的可以即使和我交流分享,謝謝!
二 Leetcode演算法尋找兩個有序陣列的中位數
1 題目 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。nums1 1,3 nums2 2 則中位數是 2.0 nums1 1,2 nums2...
swift演算法 尋找兩個有序陣列中的中位數
描述 給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不會同時為空。示例 1 num1 1,3 num2 2 中位數為 2.0示例 2 num1 1,2 num2 3,4 ...
尋找兩個有序陣列的中位數
尋找兩個有序陣列的中位數 user hihone date 2019 1 31 time 16 32 description 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 ...