1. 两数之和

程序员小航

2022-01-08 14:10

题目

题解

暴力枚举

直接遍历出所有的可能性,一一比较。

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int length = nums.length;
        for (int i = 0; i < length - 1; i++) {
            for (int j = i + 1; j < length; j++) {
                if (nums[i] + nums[j] == target) {
                    return new int[]{i, j};
                }
            }

        }
        return null;
    }
}

很显然这种方式不会很快,因为双层遍历,时间复杂度为

哈希表

只需要将已经遍历过的值放在 Hash 表中。

K:存放 target - 当前值 V:存放当前 index

这样只需要判断是否在 Hash 表中即可。

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

        HashMap map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {

            if (map.get(nums[i]) != null) {
                return new int[]{map.get(nums[i]), i};
            }
            map.put(target - nums[i], i);
        }

        return new int[]{-1, -1};
    }
}


- -

浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报