#4 Median of Two Sorted Arrays

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

/**
  * @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;
  };
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容