Leetcode|【4】Median of Two Sorted Arrays

原创 2015年09月08日 19:25:09

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)).

这题不简单,通用的方法是写出一个找到两个数组第K大的函数。这个拓展性更好!
这里我设定K从0取值。第0大的就是两个数组最小的数。
如果两数组的元素和是偶数,那么取最中间的两个数的平均值。

找到第K大的数的分析:分别在a和b数组中找出第k/2大的数(考虑a数组长度小于等于b的长度,且可能小于k/2);
如果a[k/2]

int findKth(vector<int>& nums1,int s1,vector<int>& nums2,int s2,int k){//nums1的有效长度假设比较小。
        if(nums1.size()-s1>nums2.size()-s2) return findKth(nums2,s2,nums1,s1,k);
        if(nums1.size()-s1==0) return nums2[s2+k];
        if(k==0) return nums1[s1]<nums2[s2]?nums1[s1]:nums2[s2];
        int p1=k/2<nums1.size()-s1-1?k/2:nums1.size()-s1-1;//防止nums1太短
        int p2=k-p1-1;
        if(nums1[s1+p1]<nums2[s2+p2]) return findKth(nums1,s1+p1+1,nums2,s2,k-p1-1);
        else if(nums1[s1+p1]>nums2[s2+p2]) return findKth(nums1,s1,nums2,s2+p2+1,k-p2-1);
        else return nums1[s1+p1];
    }

    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int total=nums1.size()+nums2.size();
        if(total&1){
            return findKth(nums1,0,nums2,0,total/2);
        }else{
            return ((double)findKth(nums1,0,nums2,0,total/2-1)+(double)findKth(nums1,0,nums2,0,total/2))/2;
        }

    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LeetCode(4)Median of Two Sorted Arrays

题目There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the t...

LeetCode 4 Median of Two Sorted Arrays

翻译有两个给定的排好序的数组nums1和nums2,其大小分别为m和n。 找出这两个已排序数组的中位数。 总运行时间的复杂度应该是O(log(m+n))。原文There are two sorted ...
  • NoMasp
  • NoMasp
  • 2015-09-17 16:13
  • 2060

Leetcode刷题记—— 4. Median of Two Sorted Arrays(两有序数组的中位数)

一、题目叙述: There are two sorted arrays nums1 and nums2 of size m...

LeetCode (4)Median of Two Sorted Arrays

(4)Median of Two Sorted Arrays题目:两个已经排好序的数组nums1和nums2,大小分别为m和n,求两个已排数组中位数。总运行时间复杂度应该是O(log(m+n))。用例...

【leetcode】4. Median of Two Sorted Arrays

Difficulty:Hard There are two sorted arrays nums1 and nums2 of size m and n respectively. Fi...

LeetCode 4. Median of Two Sorted Arrays

题目描述 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the media...

[LeetCode][4]Median of Two Sorted Arrays解析 -Java实现

Q: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the...

LeetCode 题目 4. Median of Two Sorted Arrays

题目原址 :点击打开链接   题目描述: There are two sorted arrays nums1 and nums2 of size m and n respectively...

leetcode #4: Median of Two Sorted Arrays

题目链接: Median of Two Sorted Arrays 这道题坑还是有点多的,刚看到的时候第一反应是:这不就是归并排序....还是图样啊。所以先这样提交了: class Sol...

Leetcode 4. Median of Two Sorted Arrays

4. Median of Two Sorted Arrays Total Accepted: 86265 Total Submissions: 471864 Difficulty: Hard ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)