自学内容网 自学内容网

Leetcode:1.两数之和

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!
代码随想录

Leetcode:1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]

从数组里面找两个数,那肯定会去遍历数组,又因为是两数之和,第一个数是当前nums[i]第二个数则肯定是target-nums[i],在通过map存放已经遍历过的元素,就能判断遍历过的元素中存不存在有当前元素和为target的元素了;比如[2,7,11,15]既是遍历第一个元素2的时候没有找到对应的元素,但是遍历到7的时候能找到2,最终结果是一致的

public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for(int i = 0; i < nums.length; i++){
            int a = target - nums[i];
            if(map.containsKey(a)){
                return new int[]{i, map.get(a)};
            }else{
                map.put(nums[i], i);
            }
        }
        return null;
    }

原文地址:https://blog.csdn.net/xiaoshiguang3/article/details/144200305

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!