美文网首页
leetcode第4题 求两个数组的中位数

leetcode第4题 求两个数组的中位数

作者: CoderAPang | 来源:发表于2019-06-13 15:46 被阅读0次

    @(LeetCode)[数组]

    leetcode 4 Median of Two Sorted Arrays
    描述:求两个数组的中位数
    方法:设定两个“指针”i和j分别指向两个数组当前需要比较的位置。
    边界讨论:
    1、当其中一个数组为空时:直接计算
    2、当两个数组都只有一个元素时:直接计算
    3、当其中一个数组已经遍历完最后一个元素时:每次比较都将两个数组中较大的数置于此处,防止越界

    class Solution {
        public double findMedianSortedArrays(int[] nums1, int[] nums2) {
          int m = nums1.length;
          int n = nums2.length;
          int midNumber1 = (m+n)%2==0?(m+n)/2:(m+n)/2+1;
          int midNumber2 = (m+n)/2+1;
            double ans = 0;
            
            if(m==1&&n==1){
                ans = (nums1[0]+nums2[0]);
                ans /=2;
                return ans;
                }
             if(m==0){
                ans=nums2[midNumber1-1]+nums2[midNumber2-1];
                ans /=2;
                return ans;
            }
            if(n==0){
                ans=nums1[midNumber1-1]+nums1[midNumber2-1];
                ans /=2;
                return ans;
            }
           int i=0,j=0;int num = 0;
            while(num<midNumber2){
                num++;
                
                if(num==midNumber1){ans =Math.min(nums1[i],nums2[j]);}
                if(num==midNumber2){ans +=Math.min(nums1[i],nums2[j]);}
                
                
                if(nums1[i] > nums2[j]){
                    if(j==n-1){
                        int temp = nums2[j];
                        nums2[j] =nums1[i];
                        nums1[i]=temp;
                        i++;
                    }else{j++;}
                }else{
                    if(i==m-1){
                        int temp = nums2[j];
                        nums2[j] =nums1[i];
                        nums1[i]=temp;
                        j++;
                    }else{
                    i++;
                    }
                }
            }
            ans =ans/2;
            return ans;
        }
    }
    

    相关文章

      网友评论

          本文标题:leetcode第4题 求两个数组的中位数

          本文链接:https://www.haomeiwen.com/subject/iyysfctx.html