#4 Median of Two Sorted Arrays

2017-02-21  本文已影响3人  KedAyA

在两个有序数组中寻找中位数,思想时归并排序的思想,将两个数组归并排序到一个数组中,提前算出中位数的个数减少循环次数

/**
  * @param {number[]} nums1
  * @param {number[]} nums2
  * @return {number}
  */
  var findMedianSortedArrays = function(nums1, nums2) {
    var l1 = nums1.length, l2 = nums2.length,p,p1,p2,i1 = 0,i2 = 0,sum = 0,n1,n2,arr = [],result;
    p = l1 + l2;

    if(p % 2 === 0) {
      p1 = p / 2;
      p2 = p1 + 1;
    } else {
      p1 = (p + 1) / 2;
    }

    while((i1 < l1 || i2 < l2) && sum <= p1) {
      if(nums1[i1] < nums2[i2] || nums2[i2] === undefined) {
        arr.push(nums1[i1++]);
      } else {
        arr.push(nums2[i2++]);
      }
      sum = i1 + i2;
    }

    if(p2 === undefined) {
      result = arr[p1 - 1];
    } else {
      result = (arr[p1 - 1] + arr[p2 - 1]) / 2;
    }

    return result;
  };
上一篇下一篇

猜你喜欢

热点阅读