尋找兩個有序陣列的中位數

2022-07-31 17:18:16 字數 859 閱讀 7230

題目:

給定兩個大小為 m 和 n 的有序陣列nums1nums2

請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。

你可以假設nums1nums2不會同時為空。

示例 1:

nums1 = [1, 3]

nums2 = [2]

則中位數是 2.0

示例 2:

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...