blog icon indicating copy to clipboard operation
blog copied to clipboard

合并已排序的数组

Open wuxianqiang opened this issue 3 years ago • 0 comments

function mergeArray(first, sec) {
  var temp = new Array(first.length + sec.length)
  var t = 0

  var i = 0
  var j = 0
  // 取较短的数组作为loop条件
  var mid = (first.length <= sec.length) ? first.length - 1 : sec.length - 1
  while (i <= mid && j <= mid) {
    //关键的逻辑在于这行
    temp[t++] = (first[i] < sec[j]) ? first[i++] : sec[j++]
  }

  // 将first数组中剩余的元素追加到temp
  while (i <= first.length - 1) {
    temp[t++] = first[i++]
  }
  // 将sec数组中剩余的元素追加到temp
  while (j <= sec.length - 1) {
    temp[t++] = sec[j++]
  }

  return temp
}
  1. 删除相同元素
function mergeArray(first, sec) {
  var temp = []
  var t = 0

  var i = 0
  var j = 0
  var k
  // 取较短的数组开始loop
  var mid = (first.length <= sec.length) ? first.length - 1 : sec.length - 1
  while (i <= mid && j <= mid) {
    //关键的逻辑在于这行
    k = (first[i] < sec[j]) ? first[i++] : sec[j++]
    //过滤重复元素
    if (t > 0 && k == temp[t - 1]) {
      continue
    }
    temp[t++] = k
  }

  // 将first数组中剩余的元素追加到temp
  while (i <= first.length - 1) {
    k = first[i++]
    if (t > 0 && k == temp[t - 1]) continue
    temp[t++] = k
  }
  // 将sec数组中剩余的元素追加到temp
  while (j <= sec.length - 1) {
    k = sec[j++]
    if (t > 0 && k == temp[t - 1]) continue
    temp[t++] = k
  }

  return temp
}

console.log(mergeArray([1, 2, 3], [2, 3, 4, 6]))

wuxianqiang avatar Jul 24 '21 04:07 wuxianqiang