leetcode1 Two Sum(JavaScript)
来源:互联网 发布:战争框架steam网络 编辑:程序博客网 时间:2024/06/15 06:27
问题
题目地址:leetcode1
翻译:
给定一个整数数组,找出数组中相加等于你指定数字的两个数。
你可以认为每一个输入有且只有一个结果。
举例:
输入:nums = [2, 7, 11, 15] , target = 9
由 nums[0] + nums1 = 2 + 7 = 9;
输出:[0,1]
2016/2/13更新:
返回数组的指数修改为从0开始。
方法1
最直接的思路,每出现一个值x,直接在数组中寻找是否有等于(target-x)的值。
/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { for (var i = 0; i < nums.length; i++) { for (var j = i + 1; j < nums.length; j++) { if (nums[j] == target - nums[i]) { var arr=[i,j]; return arr; } } }};
时间复杂度为O(n*n),空间复杂度为O(1)。
方法2
受到类似hash表的启发,把数组的值和序号对应起来处理,此处有参考别人的解答(整理时发现已经在“标答”里)。
/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { var ans = []; var map = []; for (var i = 0; i < nums.length; i++) { if (map[target - nums[i]] !== undefined) { ans[0] = map[target - nums[i]] ; ans[1] = i; return ans; } map[nums[i]] = i;}};
时间复杂度为O(n),空间复杂度为O(n),牺牲空间换时间。
标答里面给了两种,一种是全部放进去再查找,一种是一边找一边放,这个算是后者。
0 0
- leetcode1 Two Sum(JavaScript)
- [LeetCode1] Two Sum
- LeetCode1 Two Sum
- Leetcode1:Two Sum
- leetcode1 two sum
- LeetCode1 Two Sum
- LeetCode1:Two Sum
- leetcode1 Two Sum题解
- leetcode1 Two Sum
- LeetCode1 Two Sum
- LeetCode1:Two Sum
- leetCode1: Two Sum
- leetcode1--Two Sum
- leetcode1 Two Sum
- LeetCode1. Two Sum
- Leetcode1:Two Sum
- leetcode1.Two Sum
- leetcode1 Two Sum
- elasticsearch配置详解
- thinkphp实现excel数据的导入导出
- iOS Framework 制作 加载注意事项
- 深入 SpringMVC配置详解
- opencv-计算图像的SIFT特征及匹配
- leetcode1 Two Sum(JavaScript)
- 高级函数
- Dr.com API
- java 大数据方面面试题_2
- iOS-多线程之NSThread
- 【hdu1423】【DP】最长公共上升子序列
- 人流密度(crowd counting)估计方法
- HTTP协议详解(真的很经典)
- logback简要介绍(三)