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;
}
第三に、改善
私は考えよう...