刷题4。2つのソート配列の中央値

I、題し

2つのソート配列、自分で特定の検索の中央値。

このテーマは、私はいくつか考えた後、私は非常に実装するために複雑ではないと思う、見ました。

しかし、バグがないことをすると、最大の問題は、パフォーマンス上の問題であり、難しいことではありません。

道のわずか42%の性能は、あまりにも多くのメモリを取ります。さらに最適化する必要があります!

第二に、件名、私が実現します

2提出されました:

第1回:間違った回答

第二:最後に右

ここに私の完全なコードの実装である、取る必要は:

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int m = nums1.size();
        int n = nums2.size();
        float f = 0;
        vector<int> res;
        int i=0,j=0;
        while(i<m && j<n){
            if(nums1[i]<nums2[j]){
                res.push_back(nums1[i]);
                i++;
            }else{
                res.push_back(nums2[j]);
                j++;
            }
        }
        while(i<m){
            res.push_back(nums1[i]);
            i++;
        }
        while(j<n){
           res.push_back(nums2[j]);
           j++; 
        }
            
        if((m+n) %2 == 0){
            //总共有偶数个,取中间2个平均值
            f = res[(m+n)/2-1]+res[(m+n)/2];
            return f/2;
        }else{
            //找到中间值
            return res[(m+n)/2];
        }
    }
};

int main(){
    vector<int> v1 = {1,3};
    vector<int> v2 = {2};
    Solution s;
    cout<<s.findMedianSortedArrays(v1,v2)<<endl;
    
    v1 = {1,2};
    v2 = {3,4};
    cout<<s.findMedianSortedArrays(v1,v2)<<endl;
    return 0;
}

第三に、改善

私は考えよう...

おすすめ

転載: www.cnblogs.com/siweihz/p/12231449.html