Leetcode 1 TwoSum -Java刷题

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 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");
    }
}

你可能感兴趣的:(Leetcode 1 TwoSum -Java刷题)