https://leetcode-cn.com/problems/two-sum/
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
int temp,count=0;
int[] res = new int[2];
int[] ans = new int[2];
for(int i = 0;i< nums.length;i++){
map.put(nums[i],i);
}
for(int i = 0;i < nums.length;i++){
temp = target - nums[i];
if(map.containsKey(temp)){
if(temp == nums[i]){
count++;
if(count == 1) ans[0] = i;
else ans[1] = i;
}
res[0] = i;
res[1] = map.get(temp);
}
}
return count == 2 ? ans : res;
}
}
思路比较麻烦,先把原数组存在map里一遍,然后再遍历数组,每个元素判断是否存在temp,这个很麻烦,还有数组中出现相同元素,比如3,3,而target=6的情况,会返回0,0而不是0,1,我用ans来存相同元素组成target的情况。后面会有两个改善,未完待续。
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
int temp;
int[] res = new int[2];
for(int i = 0;i < nums.length;i++){
temp = target - nums[i];
if(map.containsKey(temp)){
res[0] = i;
res[1] = map.get(temp);
return res;
}
map.put(nums[i],i);
}
return res;
}
}