LeetCode Hot 100 --- 两数之和(java)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Hot 100 --- 两数之和(java)相关的知识,希望对你有一定的参考价值。

题目

最优解法:一遍哈希

最容易想到是暴力破解,两个循环,但时间复杂度O(n2),比较高,这里用HashMap,时间复杂度O(n),空间复杂度O(n)

之前牛客刷过同样的 两数之和,要求返回索引不一样而已

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<>();
        for(int i = 0 ; i < nums.length ; i++){
            //没有target-nums[i]就直接短路,进行put添加,并且不能下标相等
            if(map.containsKey(target-nums[i]) && map.get(target-nums[i]) != i){
                return new int[]{i,map.get(target-nums[i])};
            }
            map.put(nums[i],i);
        }
        return new int[0];
    }
}

以上是关于LeetCode Hot 100 --- 两数之和(java)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 热题 HOT 1001. 两数之和

LeetCode 热题 HOT 1001. 两数之和

LeetCode 热题 HOT 1001. 两数之和

leetcode hot100 easy

LeetCode Hot 100 --- 两数相加(java)

LeetCode Hot 100 --- 三数之和 (java详解)