第一种解法就是把每个数都放在哈希表中 然后去找对应的数
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap hm = new HashMap();
for ( int i = 0; i < nums.length; i++) {
hm.put(nums[i], i);
}
for(int i = 0 ; i < nums.length;i++) {
if(hm.containsKey(target-nums[i])) {
if(i!=hm.get(target-nums[i])){
int arr [] = {i,hm.get(target-nums[i])};
return arr;}
}
}
return null;
}
}第二种解法 分开判断 不满足就放在哈希表,满足就取出
/*
* 思路:如果没有找到就添加到哈希表中
* 就用一次遍历就可以得到结果
*/
public class solution {
public int[] twoSum(int[] nums, int target) {
int[] ans = new int[2];
HashMap<Integer, Integer> hs = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if (!hs.containsKey(target - nums[i])) {
hs.put(nums[i], i);
} else if (hs.containsKey(target - nums[i])) {
ans[0] = i;
ans[0] = hs.get(target - nums[i]);
}
}
return ans;
}
}优化 第二个if是不需要的
class Solution {
HashMaphm ;
public int[] twoSum(int[] nums, int t) {
int [] ans = new int[2] ;
hm = new HashMap();
for(int i = 0 ; i < nums.length ; i++) {
if(hm.containsKey(t-nums[i])) {
ans[1] = i;
ans[0] = hm.get(t-nums[i]);
}
hm.put(nums[i],i );
}
return ans;
}
}
京公网安备 11010502036488号