当前位置:网站首页>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;
}
}
边栏推荐
猜你喜欢
国内外知名源码商城系统盘点
Amazon亚马逊 Vendor Central Label详解
CSRF和SSRF漏洞
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
如何用matlab做高精度计算?【第一辑】
Redis非关系型数据库
unity webgl报 Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON
【深度学习实践(二)】上手手写数字识别
data:image/jpg;base64格式数据转化为图片
全国职业院校技能大赛网络安全竞赛之应急响应
随机推荐
简析强制缓存和协商缓存
电商系统PC商城模块介绍
错误记录:TypeError: object() takes no parameters
中职网络安全竞赛B模块新题
用matlab打造的摩斯电码加解码器音频版,支持包括中文在内的任意字符
经典宋诗排行榜
matlab科研绘图模板,直接奉上源代码!
带你了解一下PHP搭建的电商商城系统
更改mysql数据库默认的字符集(mysql 存储 emoji表情)
【论文笔记】—低照度图像增强—Supervised—RetinexNet—2018-BMVC
C语言指针
SystemVerilog-条件(三元)运算符
a标签下载图片,不要预览
分布式计算实验2 线程池
SQL如何从字符串截取指定字符(LEFT、MID、RIGHT三大函数)
SQL去重的三种方法汇总
微信小程序实现活动倒计时
卷积神经网络CNN
npm包发布与迭代
Mac安装PHP开发环境