首页 > 代码库 > LeetCode 2.Median of Two Sorted Arrays
LeetCode 2.Median of Two Sorted Arrays
#include<iostream>#include<vector>using namespace std;class Solution {public: double findMedianSortedArrays(int A[], int m, int B[], int n) { int findNum=0; if((m+n)%2==0) findNum=2; else findNum=1; int leftOffsetA=0,leftOffsetB=0; int rightOffsetA=0,rightOffsetB=0; while(leftOffsetA+leftOffsetB+rightOffsetA+rightOffsetB!=m+n-findNum) { if(leftOffsetA==m|| rightOffsetA==m) { //左右端都在B中 int halfLenthOfPartB=(n-1-leftOffsetB-rightOffsetB)/2; leftOffsetB+=halfLenthOfPartB; rightOffsetB+=halfLenthOfPartB; break; } else if(leftOffsetB==n|| rightOffsetB==n) { //左右端都在A中 int halfLenthOfPartA=(m-1-leftOffsetA-rightOffsetA)/2; leftOffsetA+=halfLenthOfPartA; rightOffsetA+=halfLenthOfPartA; break; } else { //左端还分别在A、B中 if(A[leftOffsetA]<B[leftOffsetB]) leftOffsetA++; else leftOffsetB++; if(A[m-1-rightOffsetA]>B[n-1-rightOffsetB]) rightOffsetA++; else rightOffsetB++; } } // cout<<"leftOffsetA:"<<leftOffsetA<<" rightOffsetA"<<rightOffsetA<<endl; // cout<<"leftOffsetB:"<<leftOffsetB<<" rightOffsetB"<<rightOffsetB<<endl; //取出两段截断的int数据 vector<int> ivec; for(int index_i=leftOffsetA;index_i<=m-1-rightOffsetA &&index_i<m;index_i++) { ivec.push_back(A[index_i]); //cout<<"A中取出:"<<A[index_i]<<endl; } for(int index_i=leftOffsetB;index_i<=n-1-rightOffsetB &&index_i<n;index_i++) { ivec.push_back(B[index_i]); //cout<<"B中取出:"<<B[index_i]<<endl; } if(findNum==1) return ivec[0]; else return (ivec[0]+ivec[1])/2.0f; }};
LeetCode 2.Median of Two Sorted Arrays
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。