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 解题报告

题目:Median of Two Sorted Arrays 找到两排序数组的全部元素的中位数。

求2个排序数组的中间元素的值(leetcode4:Median of Two Sorted Arrays)

题目:给定2个数组nums1和nums2,长度分别为m和n,求2个数组中间的元素,总时间复杂度为O(log(m+n))。There are two sorted arrays nums1 and nu...
  • hnu2012
  • hnu2012
  • 2017年05月15日 11:20
  • 139

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

leetCode 4. Median of Two Sorted Arrays

问题https://leetcode.com/problems/median-of-two-sorted-arrays/ 给定两个排好序的整数序列,求中位数。解法一开始没有思路,看了discuss中...

leetcode 4.median of two sorted arrays

写在前面的废话 小渣渣的leetcode之旅 刚拿到这道题第一个是想到用类似归并的算法逐个逐个数,然后找到中间的数,不过觉得既然是标为hard的题觉得这种做法时间发咋度较高。然后产生了第二...

Leetcode #4 Median of Two Sorted Arrays 解题小节

1 题目理解leetcode原题查看 这道题给定了两个已经排序号的数组的数组,现在要求给出其中位数。 如果简单着去理解的话,我们假设一个长度为n,一个长度为m,我们用两个指针分别指向两个数组,比较...
  • MebiuW
  • MebiuW
  • 2016年03月07日 22:02
  • 884

leetcode-4-Median of Two Sorted Arrays

难度hard描述There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of ...
  • yiyele
  • yiyele
  • 2017年07月17日 21:51
  • 5501

[LeetCode]4. Median of Two Sorted Arrays

4. Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of size m and n respect...
  • Johnkui
  • Johnkui
  • 2016年04月10日 22:35
  • 153

LeetCode 4---Median of Two Sorted Arrays

题目链接: 转载自:http://www.lxway.com/49629084.htm AC代码如下:、public class Problem4 { public static void ...

【Leetcode 4】Median of Two Sorted Arrays

题意:给定两个有序的数组,求出中位数。 思路:按照求解第k大算法的思想。具体如下: 假设有两个数组 A,B  现要求两数组中所有数字的第k大,那么我们可以比较 A[k/2]和B[k/2]  假设 A[...
  • L_Ecry
  • L_Ecry
  • 2017年05月01日 16:31
  • 121
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leetcode|【4】Median of Two Sorted Arrays
举报原因:
原因补充:

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