当前位置:网站首页>LeetCode每日五题01:两数之和 (均1200题)
LeetCode每日五题01:两数之和 (均1200题)
2022-08-04 06:40:00 【那人独钓寒江雪.】
我的解法
package SuanFA;
import java.util.Scanner;
public class TwoNumber {
public static void main(String[] args) {
// 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
int[] arr={
3,3};
Scanner sc=new Scanner(System.in);
System.out.print("target = ");
int target=sc.nextInt();
for (int i=0;i<arr.length;i++){
for (int j=i+1;j<arr.length;j++){
if (arr[i]+arr[j]==target){
System.out.println((i+" "+j));
}
}
}
}
}
改良解法
解题思路:
创建一个HashMap,默认为空,遍历数组nums,对元素nums[i]进行如下处理:
如果target-nums[i]的值在HashMap中存在映射关系(使用containsKey方法),则找到了满足题目条件的答案————target-nums[i]对应的索引,以及索引i;如果不存在,则以nums[i]为键,其索引i为值,放入HashMap。
注意:nums数组中的元素充当key,其索引充当value,由于在Map集合的映射关系中,key是唯一的,value是可重复的(即不同key可以对应相同的value,但key要求互不相同,故允许根据key取value,不允许根据value取其key),所以这样做便于根据值target-nums[i]取其索引,这道题索引是我们想要的答案。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res = {
0,0};//用于存放答案的数组
HashMap<Integer,Integer> hm = new HashMap<>();
//nums[i]充当key,索引i充当value
for (int i = 0; i < nums.length; i++) {
if (hm.containsKey(target - nums[i])) {
//找到答案了
res[0] = hm.get(target - nums[i]);
res[1] = i;
break;
}
else{
hm.put(nums[i],i);
}
}
return res;
}
}
边栏推荐
猜你喜欢
随机推荐
MySQL内存淘汰策略
微信小程序实现活动倒计时
powershell和cmd对比
全国职业院校技能大赛网络安全竞赛之应急响应
53个全球免费学术资源数据库整理,查资料写论文必备【开学必备】
fanuc机器人IO分配报警信号分配无效
data:image/jpg;base64格式数据转化为图片
专题讲座7 计算几何 学习心得
力扣每日一题-第47天-15. 三数之和
Unable to preventDefault inside passive event listener due to target being treated as passive. See
中断和异常的处理与抢占式多任务
分布式计算实验1 负载均衡
如何画好业务架构图。
中职网络安全竞赛B模块新题
打破千篇一律,DIY属于自己独一无二的商城
likeshop单商户高级版企业源码发布了新的版本1.8.1
【深度学习实践(二)】上手手写数字识别
用手机也能轻松玩转MATLAB编程
Sql优化总结!详细!(2021最新面试必问)
卷积神经网络CNN