美文网首页
Leetcode 1 TwoSum -Java刷题

Leetcode 1 TwoSum -Java刷题

作者: Mereder | 来源:发表于2019-04-03 21:39 被阅读0次

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

    相关文章

      网友评论

          本文标题:Leetcode 1 TwoSum -Java刷题

          本文链接:https://www.haomeiwen.com/subject/cxvtiqtx.html