天天看点

LeetCode #4 寻找两个正序数组的中位数

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的空间复杂度为 O(1)。 你可以假设 nums1 和 nums2 不会同时为空。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays

class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
      int len1 = nums1.length;
      int len2 = nums2.length;
      int len = len1 + len2;
      int right = -1;
      int left = -1;
      int curA = 0;
      int curB = 0;
      for(int i=0;i<=len/2;i++){
          left = right;
          if(curA<len1 && (curB>=len2||nums1[curA]<nums2[curB])){
              right = nums1[curA++];
          }
          else{
             right = nums2[curB++];
          }
      }
        if(len%2 == 1){
            return right;
        }
        else{
            return (right+left)/2.0;
        }
    }
}