美文网首页
leetcode 1 两数相加

leetcode 1 两数相加

作者: justonemoretry | 来源:发表于2019-08-18 16:22 被阅读0次

    java解法

    解题思路:常规解法为,先选定一个元素,遍历数组去查找是否存在另一个元素,和这个元素相加等于总和,这样整体的时间复杂度为O(n^2)。在加快查找方面,使用hash结构是很好的选择,于是,将已经出现过的元素放到hashmap中,可以直接判断是否存在另一个元素,时间复杂度为O(n)。

    class Solution {

        public int[] twoSum(int[] nums, int target) {

            // 利用hashMap加快另一个元素的查找

            Map<Integer, Integer> map = new HashMap<>();

            for (int i = 0; i < nums.length; i++) {

                int m = target - nums[i];

                if (map.containsKey(m)) {

                    return new int[] {map.get(m), i};

                }

                map.put(nums[i], i);

            }

            throw new IllegalArgumentException("no two number");

        }

    }

    相关文章

      网友评论

          本文标题:leetcode 1 两数相加

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