码迷,mamicode.com
首页 > 编程语言 > 详细

leetcode1 Two Sum的JavaScript解答总结

时间:2016-04-20 13:39:02      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

一、问题描述

技术分享
翻译:

给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字。
你可以假设每一个输入只有一个结果。
举例:
输入:nums=[2, 7, 11, 15], target = 9
输出:[0,1]

二、解答
1.每出现一个值x,直接在数组中寻找是否有等于(target-x)的值

 1 /**
 2  * @param {number[]} nums
 3  * @param {number} target
 4  * @return {number[]}
 5  */
 6 var twoSum = function(nums, target) {
 7     for (var i = 0; i < nums.length; i++) {
 8         for (var j = i + 1; j < nums.length; j++) {
 9             if (nums[j] == target - nums[i]) {
10                var arr=[i,j]; 
11                return arr;
12             }
13         }
14     }
15 };

   时间复杂度为O(n*n),空间复杂度为O(1),beats 57.50%,感觉没有办法进一步增加时间复杂度了,有点慌。

2.受到类似hash表的启发,把数组的值和序号对应起来处理。

 1 /**
 2  * @param {number[]} nums
 3  * @param {number} target
 4  * @return {number[]}
 5  */
 6 //by user MarsFreewill
 7 var twoSum = function(nums, target) {
 8     var ans = [];
 9     var map = [];
10     for (var i = 0; i < nums.length; i++) {
11         if (map[target - nums[i]] !== undefined) {
12             ans[0] = parseInt(map[target - nums[i]]) ;
13             ans[1] = i;
14             return ans;
15         } 
16     map[nums[i]] = i;
17 }
18 }

时间复杂度为O(n),空间复杂度为O(n),么法,牺牲空间换时间,beats 97.22%。

leetcode1 Two Sum的JavaScript解答总结

标签:

原文地址:http://www.cnblogs.com/bobshui/p/5412053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!