内容简介:JS斩杀LeetCode(1):Two Sum
题目:
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数组的下标,符合条件则返回结果。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mobilizing Web Sites
Layon, Kristofer / 2011-12 / 266.00元
Everyone has been talking about the mobile web in recent years, and more of us are browsing the web on smartphones and similar devices than ever before. But most of what we are viewing has not yet bee......一起来看看 《Mobilizing Web Sites》 这本书的介绍吧!