力扣1:两数之和

崩天的勾玉
崩天的勾玉
崩天的勾玉
65
文章
4
评论
2021年5月25日16:39:15
评论
22 470字

给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。

题解:

public int[] twoSum(int[] nums, int target) {
    Map<Integer,Integer> map=new HashMap<>();
    for(int i=0;i<nums.length;i++){
        int sub=target-nums[i];
        if(map.containsKey(sub)){
            return new int[]{i,map.get(sub)};
        }
        map.put(nums[i], i);
    }
    throw new IllegalArgumentException("No two sum solution");
}

思路:new一个哈希表,一次for遍历,每个元素先判断表中有无和他组成等于目标值的元素,没有就把它放进表里。


时间复杂度:O(n) 空间:O(n)


注意:HashMap<>()的括号、map.put(nums[i], i)的i、new int[]{i,map.get(sub)}的{} 、IllegalArgumentException大写I

发表评论

匿名网友