题解 | #两数之和#

两数之和

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;
    }

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

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务