c語言刷leetcode,[leetcode] 4. 尋找兩個有序數組的中位數

 2023-11-18 阅读 25 评论 0

摘要:官方題解:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/xun-zhao-liang-ge-you-xu-shu-zu-de-zhong-wei-shu-b/ class Solution { public:double findMedianSortedArrays(vector<int>& A, vector<int>& B) {int m = A.si

在這里插入圖片描述
官方題解:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/xun-zhao-liang-ge-you-xu-shu-zu-de-zhong-wei-shu-b/

class Solution {
public:double findMedianSortedArrays(vector<int>& A, vector<int>& B) {int m = A.size();int n = B.size();if(m > n){vector<int> temp = A;A = B;B = temp;m = A.size();n = B.size();}int iMin = 0, iMax = m, halfLen = (n + m + 1)/2;while(iMin <= iMax){int i = (iMin+iMax)/2;  //0 <= i <= m;int j = halfLen - i;	//i + j = m - i + n - j 或 i + j = m - i + n - j + 1if(i < iMax && B[j-1] > A[i]){//i < m ==> j > 0//并且m < n ==> j <= n  iMin = i + 1;        //too small}else if(i > iMin && A[i-1] > B[j]){//i > 0 ==> j < n//并且m < n ==> j >= 0 iMax = i - 1;       //too big}else{double maxLeft = 0;if(i == 0){ maxLeft = B[j-1]; }else if(j == 0) { maxLeft = A[i-1]; }else {  maxLeft = max(A[i-1], B[j-1]);  }if ( (m + n) % 2 == 1 ) { return maxLeft; }int minRight = 0;if(i == m) { minRight = B[j]; }else if(j == n){ minRight = A[i]; }else { minRight = min(A[i], B[j]); }return (maxLeft + minRight)/2.0;}}return 0.0;}
};

m <= n的作用:

            if(i < iMax && B[j-1] > A[i]){//i < m ==> j > 0 //并且m < n ==> j <= n  iMin = i + 1;        //too small}

i < m ==> j > 0,但是,這個時候j會大于n嗎?
不會,因為i是大于等于0小于等于m的,由m <= n(一開始保證了) 可以推出j < = n,因為i越小,j就越大,i == 0時,j最大,j = (m + n + 1) /2 - 0 <= (2n + 1)/2 <= n(int運算)

			else if(i > iMin && A[i-1] > B[j]){//i > 0 ==> j < n//并且m < n ==> j >= 0 iMax = i - 1;       //too big}

c語言刷leetcode。這個也是同理,由i > 0 ==> j < n,由m < n ==> j >= 0,因為i越大,j就越小,i == m時,j最大,j = (m + n + 1) /2 - m >= (n - m + 1)/2 >= 0(int運算,m <= n)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/178886.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息