1. 两数之和
·
文章目录
力扣地址: 简单:1. 两数之和
1.题解
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0; i<nums.length; i++){
if(map.containsKey(target-nums[i])){
return new int[]{map.get(target-nums[i]),i};
}
map.put(nums[i],i);
}
return new int[]{};
}
}
2.机考代码
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
//方法名必须是Main
public class Main {
//加static
public static int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0; i<nums.length; i++){
if(map.containsKey(target-nums[i])){
return new int[]{map.get(target-nums[i]),i};
}
map.put(nums[i],i);
}
return new int[]{};
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 读取数组长度
int n = sc.nextInt();
int[] nums = new int[n];
// 读取数组元素
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
// 读取目标值
int target = sc.nextInt();
// 调用方法
int[] res = twoSum(nums, target);
// 输出结果
System.out.println("[" + res[0] + "," + res[1] + "]");
}
}
3.知识点讲解
1.创建map集合
Map<Key类型, Value类型> 变量名 = new HashMap<>();
举例:
// 1. 整数 key + 整数 value(你现在用的)
Map<Integer, Integer> map = new HashMap<>();
// 2. 字符串 key + 列表 value(你那道题用的)
Map<String, List<String>> map = new HashMap<>();
// 3. 字符串 key + 整数值
Map<String, Integer> map = new HashMap<>();
// 4. 整数 key + 字符串 value
Map<Integer, String> map = new HashMap<>();
2.数组的length是属性,不用加()
for(int i = 0; i<nums.length; i++)
为什么不用加 ()?
因为:
数组的 length 是 属性,不是方法!
- 属性:就是变量,直接写名字
- 方法:才需要加 ()
- 数组 → 用 .length(无括号)
int[] nums = {1,2,3};
int len = nums.length; // 正确
- 字符串 String → 用 .length()(有括号)
String s = "hello";
int len = s.length(); // 正确
- 集合 List → 用 .size()(有括号)
List<Integer> list = new ArrayList<>();
int size = list.size();
3.map.containsKey (key)
检查 map 里面有没有包含你传入的这个 key
- 有 → 返回 true
- 没有 → 返回 false
4.return new int[]{a, b};
这是 Java 里 直接创建并返回一个数组 的写法,一步到位,不用单独定义变量。
- new int[]
意思:创建一个 int 类型的数组和平时写 int[] arr = new int[2]; 是同一个逻辑。 - { 值1, 值2 }
大括号里直接写数组里要放的元素,有几个就是多长的数组。 - 合起来
new int[]{a, b}意思:创建一个长度为 2 的 int 数组,里面装 a 和 b 两个数。 - 前面加 return
return new int[]{a, b};意思:直接把这个新建好的数组作为结果返回出去。
//普通写法
int[] res = new int[2];
res[0] = a;
res[1] = b;
return res;
5.map.get (key)
根据传入的 key,获取 map 中对应的 value
6.map.put(key, value)
往 Map 里存数据
7.Map 集合常用方法总结
一、核心常用方法(机试/工作必备)
-
put(key, value)
向 Map 中添加一组键值对,用于存储数据。 -
get(key)
根据指定的键,获取对应的数值。 -
containsKey(key)
判断 Map 中是否包含指定的键,返回布尔值。 -
remove(key)
根据键删除 Map 中对应的一组键值对。 -
keySet()
获取 Map 中所有的键,返回一个键的集合。 -
values()
获取 Map 中所有的值,返回一个值的集合。
二、高频使用方法(重点记忆)
最常用的四个方法:put、get、containsKey、keySet。
掌握这四个即可满足大部分算法题需求。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)