天天看點

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;
        }
    }
}