题目链接:https://leetcode.com/problems/two-sum/
解题思路:
1、这可以用暴力破解,但是会显得很low。
2、所以我们采用HashMap,(key,value),这里的key=nums[i],value等于index。先判断目标值减去当前指针指的这个数是否在这个map中。
比如[2,7,11,15]
当i=0, map为空,肯定不包含这个数,所以把<2,0>放进map
当i=1,判断目标值减当前指针,9-7=2,判断map包不包含key=2这个东西,一看包含的,那么就返回这个res,如果不包含,那么就把<7,1>这个再放进去。
1 import java.util.ArrayList; 2 class Solution { 3 public int[] twoSum(int[] nums, int target) { 4 5 Map<Integer, Integer> has= new HashMap<Integer, Integer>(); 6 int [] res = null; 7 for(int i=0;i<nums.length;i++) 8 { 9 if(has.containsKey(target-nums[i])) 10 { 11 res= new int[] {has.get(target-nums[i]),i}; 12 } 13 else{ 14 has.put(nums[i],i); 15 } 16 } 17 return res; 18 19 } 20 }