《算法巩固》学习第一天

自己走在前端的茫茫人海中已经两年多了, 最近发现自己算法功底不是很好,就听从高人指点迷津开始算法巩固大学基础的第一天

  • 题目
    给定一个整数数列,找出其中和为特定值的那两个数。你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

    实例:

    给定 nums = [2, 7, 11, 15], target = 9
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

  • 普通的方案 (1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let result = [];
for (var i = 0; i < nums.length; i++) {
for (var j = 0; j < nums.length; j++) {
if (i !== j) {
if (nums[i] + nums[j] === target) {
test = [j, i]
}
}
}
}
return test
};
  • 精简方案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /**
    * @param {number[]} nums
    * @param {number} target
    * @return {number[]}
    */
    var twoSum = function(nums, target) {
    var result = [];
    nums.reduce(function(last, current, idx, array) {
    if (array[last] + current === target) {
    result = [last, idx]
    }
    return idx
    }, 0)
    return result
    };

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器