题解 | #两数之和#

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

方法1:遍历数组,暴力破解
解题思路:用两个for循环遍历数组,当numbers[i] + numbers[j] == target时,输出数的下标。如果不存在就返回空数组
注意:返回的下标是从1开始的
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        int[] res = new int[2];
        if (numbers.length <= 0) {
            return res;
        }
        for (int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                if (numbers[i] + numbers[j] == target && i != j) {
                    res[0] = i + 1;
                    res[1] = j + 1;
                }
            }
        }
        return res;
    }

方法2:HashMap
解题思路:利用HashMap存储数在numbers[]数组中的值和下标,然后通过for循环遍历数组,当前数为numbers[i],如果target - numbers[i]等于在HashMap中的key值,那么说明数组中存在两个和为target的数,返回值在数组中的下标。
如果不存在就返回空数组
注意:返回的下标从1开始。
    public int[] twoSum (int[] numbers, int target) {
        // write code here
        int[] res = new int[2];
        HashMap<Integer,Integer> hash = new HashMap<Integer, Integer>();
        for (int i = 0; i < numbers.length; i++) {
            if (hash.containsKey(target - numbers[i])) {
                res[0] = hash.get(target - numbers[i]) + 1;
                res[1] = i + 1;
            } else {
                hash.put(numbers[i] , i);
            }
        }

        return res;
    }

#牛客网博客##牛客网在线编程#
全部评论

相关推荐

死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务