Leetcode 1 TwoSum -Java刷题
2019-04-03 本文已影响0人
Mereder
Java hashmap的用法 类似于Python 里面的 dict 字典
先将 数组 进行 hashmap hash过程是O(N)的
再从 hashmap中寻找 目标值和另一个加数的差值
如果找到 且 index != i 则说明存在 TwoSum
算法复杂度 为O(n)
three sum 的问题 也是 类似这样求解,先对一个加数使用Hash
然后循环遍历另外两个加数 复杂度 降低到o(n^2)
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer,Integer> h1 = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
h1.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++) {
int error = target - nums[i];
if (h1.containsKey(error) && h1.get(error) != i){
return new int[] {i, h1.get(error)};
}
}
throw new IllegalArgumentException("No two sum solution");
}
}