题解 | #和为S的两个数字#

和为S的两个数字

http://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b

js双指针解法

function FindNumbersWithSum(array, sum) {
  let l = 0;
  let r = array.length - 1;
  //     if(array.detailEntiList==undefined){
  //         return []
  //     }
  let num = array[l] + array[r];
  let ans = [];
  while (l < r) {
    if (array[l] + array[r] < sum) {
      l++;
    } else if (array[l] + array[r] > sum) {
      r--;
    } else if (array[l] + array[r] === sum) {
      // 这里不用else if 会出错
      let cur = [];
      cur.push(array[l], array[r]);
      ans.push(cur);
      l++;
    }
  }
  ans.sort((a, b) => {
    return a[0] * a[1] - b[0] * b[1];
  });
  return ans[0] || [];
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务