LeetCode 1. 【Java】1. Two Sum
原题链接
简单
作者:
tt2767
,
2020-02-20 15:15:24
,
所有人可见
,
阅读 1070
/*
1. 反向索引每个数的下标,查找target-numgei[i]是否存在
2. 必须是2个数字所以需要特判下是否是自身组成的
3. 时间O(N),空间O(N)
*/
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> mapping = new HashMap<>();
for (int i = 0 ; i < nums.length ; i ++){
mapping.put(nums[i], i);
}
for (int i = 0 ; i < nums.length; i ++){
int diff = target - nums[i];
if (mapping.containsKey(diff)){
int index = mapping.get(diff);
if (i == index) continue;
int[] res = {i, index};
return res;
}
}
return null;
}
}
我感觉你这样写有问题呀,还是写循环套循环比较好,mapping.put()中,num[i]值相同怎么办,比如说num[1]=20,num[9]=20,这样会不会出问题
写法不固定,用自己喜欢的写法就可以哈
要是数组里面有相同的值怎么办?