題目:
給定兩個大小為 m 和 n 的有序陣列nums1
和nums2
。
請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。
你可以假設nums1
和nums2
不會同時為空。
示例 1:
nums1 = [1, 3]示例 2:nums2 = [2]
則中位數是 2.0
nums1 = [1, 2]nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
看到這個題。很容易想到我寫過的一篇部落格合併兩個有序的陣列
它其中第三種解法我們可以應用。
所以這個題的思路就是:
1.申請乙個這兩個陣列長度加起來大小的新陣列。
2.按照順序排列
3.元素個數分為奇數和偶數:
3.1若為奇數,直接返回長度除以2然後加1下標的元素。
3.2若為偶數,返回長度除以2以及長度除以2加1的和的一半。
**如下:
class solution else}if(i < n1)
}if(j < n2)
}if(nums.length % 2 == 1)else
}}
上面這種方法都是在插入的時候就排序,如果先放進去再排序則時間複雜度就超了。
尋找兩個有序陣列的中位數
尋找兩個有序陣列的中位數 user hihone date 2019 1 31 time 16 32 description 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 ...
尋找兩個有序陣列的中位數
思路 將兩個陣列排序,然後判斷陣列長度,長度為單數,則取二分之一處的數,否則取二分之一處和二分之一減一處的數之和除以2.var findmediansortedarrays function nums1,nums2 var mid math.floor arr.length 2 if arr.len...
尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0示例 2 nums1 1,2 n...