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

2021-10-01 20:32:46 字數 1405 閱讀 9150

思路:一:利用兩指標遍歷直接找出第k小值即可

二:部落格:

將a陣列切前s**,b陣列切前k-s**,通過對a[sa-1]和b[k-sa-1]大小比較,可捨棄掉其中一部分,從而實現二分查詢出第k小值 

三:部落格: 

利用對a陣列切前l1片,在通過對b陣列切前l2=k-l1片,通過分析比較,可實現二分查詢到第k小值 

code:

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

/*class solution else if(l2<0)elseelse

}--h;

} res=p;

if((nums1.size()+nums2.size())%2==0)else if(l2<0)elseelse

}} return res;

}};*/

/*將a陣列切前s**,b陣列切前k-s**,通過對a[sa-1]和b[k-sa-1]大小比較,可捨棄掉其中一部分,從而實現二分查詢出第k小值

*//*

class solution

if(nums1[l1+p1-1]<=nums2[l2+p2-1]) return find_k_min(nums1,nums2,l1+p1,l2,k-p1);

else return find_k_min(nums1,nums2,l1,l2+p2,k-p2); }

double findmediansortedarrays(vector& nums1, vector& nums2)

};*/

/*利用對a陣列切前l1片,在通過對b陣列切前l2=k-l1片,通過分析比較,可實現二分查詢到第k小值

*/class solution else if(nums1[l1]<=nums2[l2+1])

if(boo) l=h+1;

else r=h-1;

} return max(nums1[r],nums2[k-r-2]); }

double findmediansortedarrays(vector& nums1, vector& nums2)

double res=find_k_min(nums1,nums2,(len1+len2+1)/2);

if((len1+len2)%2==0) res=(res+find_k_min(nums1,nums2,(len1+len2)/2+1))/2;

return res;

}};int main()

for(int i=0;i>x;

v2.push_back(x);

} cout<

return 0;

}

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

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

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

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

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