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

2022-08-21 06:54:09 字數 962 閱讀 4846

給定兩個大小為 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

轉化成求兩個有序陣列的第k大,當x+y=k,arr1[x-1]<

arr2[k-x],arr[x]>arr2[y-1], max(arr1[x-1].arr2[y-1])為第k大

感覺寫的好亂啊,qaq,改天理清思路重新寫下。

1

class

solution

16else

*/17

if(k-mid-1

<0)continue;18

if(nums2[k-mid-1]>nums1[mid])l=mid;

19else r=mid;20}

21 auto lmax=int_min,rmax=int_min;

22if(r-1>=0)lmax=nums1[r-1

];23

if(k-r-1>=0)rmax=nums2[k-r-1

];24 cout<'

'25return

max(lmax,rmax);26}

27double

get(vector&nums2)

33double findmediansortedarrays(vector& nums1, vector&nums2)

41 };

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

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 ...

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

給定兩個大小為 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 尋找兩個有序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列nums1和nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設nums1和nums2不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1,2 nums2 3...