55.算法->两数之和

作者: wo不是黄蓉 | 来源:发表于2022-02-16 17:30 被阅读0次

    day7:两数之和(简单)
    思路:

    • 不考虑重复值的情况下,目标值为【target-当前项的值】,然后查找【target-当前项的值】的下标并且返回即可。
    • 考虑有重复值的情况:自定义一个查找数组下标的方法,返回符合所有符合条件值得下标。
    var twoSum = function (nums, target) {
    for (let i = 0; i < nums.length; i++) {
        let index = nums.indexOf(target - nums[i]);
        if (index != i && index != -1) {
          return [i, index];
        }
      }
    };
    console.log(twoSum([3, 2, 4], 6));
    
    执行结果

    考虑重复值:

    var twoSum = function (nums, target) {
      for (let i = 0; i < nums.length; i++) {
        let arr = findIndex(nums, target - nums[i]);
        for (let j = 0; j < arr.length; j++) {
          if (i != arr[j]) {
            return [i, arr[j]];
          }
        }
      }
    };
    
    var findIndex = function (array, num) {
      let indexArr = [];
      array.forEach((item, index) => {
        if (item === num) {
          indexArr.push(index);
        }
      });
      return indexArr;
    };
    
    
    
    执行结果

    使用map存储得方式实现

    var twoSum1 = function (nums, target) {
      let map = new Map();
      let result = [];
      nums.forEach((item, index) => {
        let flag = map.get(target - item);
        if (flag === undefined) {
          //说明没找到
          map.set(item, index);
        } else {
          result.push(flag, index);
        }
      });
      return result;
    };
    

    相关文章

      网友评论

        本文标题:55.算法->两数之和

        本文链接:https://www.haomeiwen.com/subject/lxedlrtx.html