【算法】【线性表】【数组】两数之和

1  题目

趁着 RocketMQ在打包,做道算法题。

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target

你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1

样例 1:

输入:

numbers = [2,7,11,15]
target = 9

输出:

[0,1]

解释:numbers[0] + numbers[1] = 9

样例 2:

输入:

numbers = [15,2,7,11]
target = 9

输出:

[1,2]

解释:numbers[1] + numbers[2] = 9

2  解答

复制代码
public class Solution {
    /**
     * @param numbers: An array of Integer
     * @param target: target = numbers[index1] + numbers[index2]
     * @return: [index1, index2] (index1 < index2)
     */
    public int[] twoSum(int[] numbers, int target) {
        // write your code here
        int[] res = new int[2];
        // 1、把他们都装进map里
        Map<Integer, Integer> map = new HashMap(numbers.length);
        for (int i=0; i<numbers.length; i++) {
            map.put(numbers[i], i);
        }
        // 2、遍历,看他们的差是否在map里 在的话就返回结果了
        for (int i=0; i<numbers.length; i++) {
            int num = numbers[i];
            int minus = target - num;
            int existNum = map.getOrDefault(minus, -1);
            // 存在并且不是自己的话
            if (existNum != -1 && existNum != i) {
                if (existNum < i) {
                    res[0] = existNum;
                    res[1] = i;
                } else {
                    res[0] = i;
                    res[1] = existNum;
                }
                break;
            }
        }
        return res;
    }
}
复制代码

加油

posted @   酷酷-  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示