4. Median of Two Sorted Arrays--20160927

    xiaoxiao2023-03-24  3

    There are two sorted arrays nums1 and nums2 of size m and n respectively.

    Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

    Example 1: nums1 = [1, 3] nums2 = [2]

    The median is 2.0 Example 2: nums1 = [1, 2] nums2 = [3, 4]

    The median is (2 + 3)/2 = 2.5

    思路:求两个升序数组的中位数,思路就是将两个数组弄成一个升序数组,求中间的,当然没必要用额外的内存来存新的数组,只要遍历到第n/2个大的数就停就行了。以下的代码还是遍历玩了,主要是思路简单

    class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int size1 = nums1.size(); int size2 = nums2.size(); if(size1 + size2 == 0) { return (double)0; } if(size1 + size2 == 1) { if(size1 != 0) { return (double)nums1[0]; } return (double)nums2[0]; } int isOdd = (size1+size2)%2; int num1Index = 0; int num2Index = 0; vector<int> result; while(num1Index < size1 && num2Index < size2) { if(nums1[num1Index] < nums2[num2Index]) { result.push_back(nums1[num1Index]); num1Index++; } else { result.push_back(nums2[num2Index]); num2Index++; } } while(num1Index < size1) { result.push_back(nums1[num1Index]); num1Index++; } while(num2Index < size2) { result.push_back(nums2[num2Index]); num2Index++; } int tempIndex = (size1+size2)/2; if(isOdd) { return (double)result[tempIndex]; } else { return (double)(result[tempIndex]+result[tempIndex-1])/2; } } };
    转载请注明原文地址: https://ju.6miu.com/read-1201822.html
    最新回复(0)