题目:
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.
思路:
循环 if(nums[j]+nums[i]==target) return
答案:
class Solution{
public int[] twoSum(int[] nums,int target){
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
map.put(nums[i],i);
}
for(int i=0;i<nums.length;i++){
int complement=target-nums[i];
if(map.containsKey(complement)&&map.get(complement)!=i){
return new int[]{i,map.get(complement)};
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
关键点:
Map
初始化:Map<Key数据类型,Value数据类型> map=new HashMap<>();
放入数据: map.put(key1,value1);
根据key获取相应的value: map.get(key);
是否包含key1/value1:map.containsKey(key1)/map.containsValue(value1);
遍历方法(使用for each):
(1)keySet()遍历: for ( 数据类型:key:map.keySet()){.......}
(2)entrySet()遍历:for(Map.Entry<,> entry:map.entrySet()){......}
仅供自己学习使用,存在不足之处还望指正