【算法】【线性表】【数组】两数之和
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; } }
加油
分类:
算法 / 数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了