美文网首页算法每天300字
算法「两数之和-哈希」

算法「两数之和-哈希」

作者: TheSkyCloud | 来源:发表于2020-01-24 09:23 被阅读0次

利用HashMap 减少查询时间

在暴力法中,内层循环查找差值很浪费时间,那么如何减少查询时间呢?利用HashMap 就可以减少查询时间。使用一层循环,每遍历到一个元素就计算该元素与 target 之间的差值,然后HashMap 中寻找该差值,如果找到,则返回两个元素在数组nums 的下标,如果没有找到,则将当前元素存入HashMap中

class Solution {

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

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

        int[] Opt = new int[2];

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

            int dif = target - nums[i];

            if (map.get(dif) != null) {

                Opt[0] = map.get(dif);

                Opt[1] = i;

                return Opt;

            }

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

        }

        return Opt;

    }

}

//调用hashmap函数,containsKey方法

class Solution {

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

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

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

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

        }

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

            int complement = target - nums[i];

            if (map.containsKey(complement) && map.get(complement) != i) {

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

            }

        }

        throw new IllegalArgumentException("No two sum solution");

    }

}

时间复杂度:

O(n)。

相关文章

  • 算法「两数之和-哈希」

    利用HashMap 减少查询时间 在暴力法中,内层循环查找差值很浪费时间,那么如何减少查询时间呢?利用HashMa...

  • 「算法」两数之和 & 两数之和 II

    00001 两数之和 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只...

  • 2019-07-21刷题-3

    题目序号:1,167,125 两数之和思路:本题采用简单的暴力算法,其复杂度是O(n^2)。可采用哈希表,达到O(...

  • 算法题分类规划

    哈希表 or 切片操作 or stack 1. 两数之和 (attention break) https://le...

  • 算法:两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重...

  • 算法-两数之和

    这是一道LeetCode上的问题,详见两数之和,难度标注是简单,但是我思考到了一些比较复杂的情况,之后我会修改题目...

  • 算法--两数之和

    问题描述: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样...

  • 算法「两数之和」

    题目:给出数组nums和目标值target,找出和为目标值的两个数在数组中 想法:定义数组和目标值,遍历数组x使得...

  • 算法-两数之和

    算法对于程序的重要性不言而喻,所以从今天开始要一点一滴地积累自己的算法知识,同时也要充分地利用使用的程序语言所提供...

  • 算法:两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组...

网友评论

    本文标题:算法「两数之和-哈希」

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