美文网首页
Java实现每日一道算法面试题(1):leetcode1两数之和

Java实现每日一道算法面试题(1):leetcode1两数之和

作者: alexlee1987 | 来源:发表于2020-02-20 15:57 被阅读0次

算法在编程领域的重要性不言而喻,而且也是好多大厂面试经常要考核的重点。

1.两数之和

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

算法思路:

  1. 暴力法:使用两层循环,外层循环计算当前元素与 target 的差值,内层循环寻找该差值,若找到该差值,则返回两个元素的下标;
时间复杂度:O(n^2)
  1. 利用HashMap减少查询时间:HashMap 可以根据下标快速查找数据,减少了查询时间,结合这个特性使用一层循环即可以实现:每遍历一个元素就计算该元素与 target 之间的差值,然后到 HashMap 中查找该差值,如果找到则返回两个元素的下标,如果没有找到,则将元素存入 HashMap 中(Key:nums[i],Value:i);时间复杂度:O(n)。

算法代码:根据算法思路2,写出的算法具体代码如下:

    /**
     * 两数之和
     * @param nums
     * @param target
     * @return
     */
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] res = new int[2];
        for (int i = 0; i < nums.length; i ++) {
            int value = target - nums[i];
            if (map.get(value) != null) {
                res[0] = map.get(value);
                res[1] = i;
            }
            map.put(nums[i], i); // 构建 HashMap
        }
        return res;
    }

  如果你有疑问或更好的算法思路,欢迎留言交流!!!
  如果感觉我的文章对您有所帮助,麻烦动动小手给个喜欢,谢谢!!!

相关文章

  • Java实现每日一道算法面试题(1):leetcode1两数之和

    算法在编程领域的重要性不言而喻,而且也是好多大厂面试经常要考核的重点。 1.两数之和 题目:给定一个整数数组 nu...

  • Leetcode1——两数之和

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

  • leetCode1两数之和

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

  • Leetcode1——两数之和

    题目 在给定的数组中,找出两个数相加之和等于目标数target,返回两个数的下标index1,index2 Pyt...

  • Java算法(1):两数之和

    给定一个整数数组nuns和一个目标值target,请在数组中找出和为目标值的两个整数,并返回他们的下标,假设每种输...

  • Tag【数组】 —— LeetCode1 两数之和

    题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并...

  • 1. 两数之和-java实现

    卷首语: 第一题:两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的...

  • 算法1:两数之和

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

  • 浅入浅出实现一个异步求和函数

    简化:两数之和 我们先来简单的实现一个异步两数之和函数 加深:多数之和 上面我们实现了两数之和,然后扩展到多数之和...

  • 每日算法(两数之和、两数相加)-11.12

    今天开始记录每天学习一道两道的算法题,由简入难。今天一共学习了两道算法,一道简单一道中等,分别为两数之和、两数相加...

网友评论

      本文标题:Java实现每日一道算法面试题(1):leetcode1两数之和

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