leetcode -hot 100 -1 寻找符合的数组和(数组中重复数字的处理方式)

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    /**
    这个题的意思就是他肯定是有和是target的结果的
    因此,对于长度是2的数组
    结果肯定是[0,1]
    因此只需要判断数组长度是不是2,是的话直接返回.
    但是 现在就是把数组判断的取消了.而是每一次都是判断当前遍历的数字和之前遍历过的有没有和是target的情况,然后直接保存当前的local 和 map里面对应的targettarget-i的位置
    这样可以解决是出现重复数字的情况,因为如果当前的是重复数字了,但是map里面还没有更新这一个重复数字的local值.
     */
    public int[] twoSum(int[] nums, int target) {
        int[] result = new int[2];
        HashMap<Integer,Integer> map = new HashMap<>();
        int local = 0;
        for (int i : nums) {
            if (map.containsKey(target-i)) {
                result[1] = local;
                result[0] = map.get(target-i);
            }
            map.put(i,local);
            local++;
        }
        return result;
    }
}

你可能感兴趣的:(#,leetcode,hot100,leetcode,算法,职场和发展)