大厂面试题练习-数组中找出和为N的两个整数


题目:数组中找出和为 N 的两个整数

给定一个整数数组 nums(无序)和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标

示例

输入:[1,6,4,8,7],9
输出:[0,3]

答案

方法一

暴力法,(遍历每个元素 x,并查找是否存在一个值与 target - x 相等的目标元素)

function findTwoNum(arr, target) {
  const len = arr.length;
  for (let i = 0; i < len; i++) {
    for (let j = i + 1; j < len; j++) {
      if (arr[i] + arr[j] === target) {
        return [i, j];
      }
    }
  }
}
let nums = [1, 6, 4, 8, 7];
console.log(findTwoNum(nums, 9)); // [ 0, 3 ]

方法二

利用对象键值对的方法,循环数组将每一项数组的值作为 key,index 作为值存在对象中,在每一次循环中利用对象读取属性值的方法读取[target-当前值]所对应的 key 的值,如果存在,则该项 key 对应的值则为所找的另一项元素

function findTwoNum(arr, target) {
  let temp = {};
  for (let i = 0; i < arr.length; i++) {
    const item = arr[i];
    const diff = target - item;
    if (temp[diff] !== undefined) {
      return [temp[diff], i];
    }
    temp[item] = i;
  }
}
let nums = [1, 6, 4, 8, 7];
console.log(findTwoNum(nums, 9)); // [ 0, 3 ]

文章作者: CassielLee
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CassielLee !
评论
  目录