JS斩杀LeetCode(1):Two Sum

来源:互联网 发布:宇宙数控系统编程 编辑:程序博客网 时间:2024/06/05 14:07

题目:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

示例:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

原题链接:

https://leetcode.com/problems/two-sum/#/description


解法①

/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) {    var result = [];    for (var i = 0; i < nums.length; i++) {        for (var j = i+1; j < nums.length; j++) {            if (nums[i] + nums[j] === target && i !== j) {                result[0] = i;                result[1] = j;                return result;            }        }    }    return result;};
这种解法比较常规,时间复杂度为O(n²)。通过两个for循环遍历所有元素,当两元素之和等于target,且下标不等时,返回结果。


解法②

/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) {    var temp = [];    for (var i = 0; i < nums.length; i++) {        var cur = nums[i];        if (temp[target - cur] !== undefined) {            return [temp[target - cur], i];        }        temp[cur] = i;    }    return [];};
这种解法相比第一种更高效,时间复杂度为O(n)。将数组值作为temp数组的下标,符合条件则返回结果。

原创粉丝点击