当前位置:网站首页>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;
}
}
边栏推荐
猜你喜欢
随机推荐
unity 循环选择器
开发小技巧 navicate如何点击单元格显示全部的文本内容或通过图像查看内容
七夕情人节:中英文祝福短信送给你
简析强制缓存和协商缓存
LeetCode(剑指 Offer)- 18. 删除链表的节点
entity、domain、vo、pojo的区别与联系
fanuc机器人IO分配报警信号分配无效
登录拦截实现过程
Jenkins pipeline 自动部署实践
unicloud 腾讯云 上传文件 Have no access right to the storage uniapp
【论文笔记】—低照度图像增强—Supervised—RetinexNet—2018-BMVC
函数柯里化详解
Verilog“七宗罪”
MySQL面试题大全(陆续更新)
【学习笔记】状压dp
FCN - the originator of semantic segmentation (based on tf-Kersa reproduction code)
对产品设计,架构设计的一点思考
Promise.all 使用方法
七牛云上传图片和本地上传
专题讲座7 计算几何 学习心得









