AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

LeetCode 1. 【Java】1. Two Sum    原题链接    简单

作者: 作者的头像   tt2767 ,  2020-02-20 15:15:24 ,  阅读 568


0


/*
1. 反向索引每个数的下标,查找target-numgei[i]是否存在
2. 必须是2个数字所以需要特判下是否是自身组成的
3. 时间O(N),空间O(N)
*/


class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> mapping = new HashMap<>();
        for (int i = 0 ; i < nums.length ; i ++){
            mapping.put(nums[i], i);
        }

        for (int i = 0 ; i < nums.length; i ++){
            int diff = target - nums[i];
            if (mapping.containsKey(diff)){
                int index = mapping.get(diff);
                if (i == index) continue;
                int[] res = {i, index};
                return res;
            }
        }
        return null;
    }
}

3 评论


用户头像
易金易购-黄金回收换购   9个月前     回复

我感觉你这样写有问题呀,还是写循环套循环比较好,mapping.put()中,num[i]值相同怎么办,比如说num[1]=20,num[9]=20,这样会不会出问题

用户头像
tt2767   9个月前     回复

写法不固定,用自己喜欢的写法就可以哈


用户头像
易金易购-黄金回收换购   9个月前     回复

要是数组里面有相同的值怎么办?

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息