1. 两数之和
力扣第一题 我不信第一次进力扣的人不看这题 哈哈
题很简单 但是我最初的思路是这样的
暴力解法 代码不贴了 直接改进:
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
int[] result = new int[2];
for (int i = 0; i < nums.length; i++) {
int goal = target - nums[i];
if (map.containsKey(goal)){
result[0] = i;
result[1] = map.get(goal);
return result;
}
map.put(nums[i],i);
}
return result;
}
思路:
创建hashmap(key为数组的值,value为下标),将数组依次存入,每一次都用目标值与当前值做差,若map里没有则存入,反之有就返回结果。
当初看见这种方式很巧妙,因为相比于我天真的想法,这样做差只需遍历一次就可以 哈哈 还记得当时我觉得自己学到了很巧妙的技巧,后来才发现…