当前位置:网站首页>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;
}
}
边栏推荐
猜你喜欢
随机推荐
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
专题讲座7 计算几何 学习心得
使用腾讯云发送短信 ---- 手把手教你搞定所有步骤
unity webgl报 Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON
NelSon:一款新的适配matlab编程语法的编程工具
likeshop外卖点餐系统【100%开源无加密】
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
Redis非关系型数据库
Provide 和 Inject 的用法
entity、domain、vo、pojo的区别与联系
Verilog“七宗罪”
MySQL大总结
函数柯里化详解
经典宋诗排行榜
软件稳定性思考
SQL存储过程详解
中职网络安全竞赛C模块MS17-010批量扫描
布隆过滤器
【并发】概念
mysql月份比較是否相等









