虽然题目很简单,但是很开心,纪念一下。

leetcode 4. Median of Two Sorted Arrays

 

class Solution {
public:
   double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
	int len1 = nums1.size();
	int len2 = nums2.size();
	int sum = len1 + len2;
	int median = (len1 + len2 + 1) / 2;
	int before = 0;
	int middle = 0;
	int i,j;
	if(sum & 1){
		median = (len1 + len2 + 1) / 2;
	}else{

		median = (len1 + len2) / 2 + 1;
		//cout<<median<<endl;
	}
	for(i=0,j=0; i<len1 && j<len2;){
		if(nums1[i] < nums2[j]){
			//cout << nums1[i] << endl;
			before = middle;
			middle = nums1[i];
			i++;
		}else{
			//cout << nums2[j] << endl;
			before = middle;
			middle = nums2[j];
			j++;
		}
		if(i+j  == median){
			break;
		}
	}
	if(i+j < median){
		for(;j<len2;){
			before = middle;
			middle = nums2[j];
			j++;
		    if(i+j  == median){
				break;
			}
		}
		for(;i<len1;){
			before = middle;
			middle = nums1[i];
			i++;
		    if(i+j  == median){
				break;
			}
		}
	}
	if(sum & 1){
		return middle;
		//cout<<middle<<endl;
	}else{
		return (middle+before)/2.0;
		//cout << (middle+before)/2.0<< endl;
		//cout << before << endl;
	}

}
};

 

相关文章: