Two Sum
2017-04-25 10:08
148 查看
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.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
开始做没有别的方法,就是暴力解决:
public int[] twoSum(int[] nums, int target) { int []res = new int[2]; for(int i=0;i<nums.length;i++){ int exp = target-nums[i]; for(int j = i+1;j<nums.length;j++){ if(nums[j]==exp){ res[0] = i; res[1] = j; break A; } } } return res; } }
这样的话时间复杂度O(n²),空间复杂度O(1),
对于大数组的话运行时间比较大。
查询解决方法后,用hash表来存储,牺牲空间节省时间时间复杂度O(n),空间也是O(n),
代码如下:
public class Solution { public int[] twoSum(int[] nums, int target) { int []res = new int[2]; Map<Integer,Integer> map = new HashMap<>(nums.length); for(int i=0;i<nums.length;i++){ Integer exp = target-nums[i]; if(map.containsKey(exp)){ res[0]= map.get(exp); res[1] = i; break; } map.put(nums[i],i); } return res; } }
相关文章推荐
- leetcode1 two sum
- leetcode第一题(medium)——Two Sum
- LeetCode Two Sum
- Two sum(在数组中找两个数,使其和为指定值)
- LeetCode1 Two Sum
- Leetcode 1 Two Sum
- 1 Two Sum
- [Leetcode]Two Sum
- [LeetCode]#1 Two Sum
- LeetCode No2--Two Sum
- Two Sum
- two sum
- LeetCode 1 Two Sum
- Two Sum
- leetcode 1 Two Sum
- Leetcode#1||Two Sum
- [LeetCode] Two Sum
- Leetcode 1 two sum 难度:0
- LeetCode Problem:Two Sum
- Two Sum