LeetCode 第一题 两数之和(哈希表求解)

📅 2026/7/23 3:11:28
LeetCode 第一题 两数之和(哈希表求解)
昨天用的两层for循环求解今天用的哈希表哈希表对我来说太陌生了真的是看一遍题解再自己动手写还是会遇到一些格式问题正好在此记录学习一下。//2.哈希表Map Integer,Integer hashtable new HashMap Integer,Integer();for(int i 0; i nums.length; i){if(hashtable.containsKey(target - nums[i])){return new int[]{hashtable.get(target-nums[i]), i};}hashtable.put(nums[i], i);}return new int[0];哈希表解法踩坑完整总结一、HashMap 创建声明语法泛型顺序写错错误写成Map newInteger, Integer泛型必须紧跟类型Map后方类名大小写错误Hashmap错误Java 严格区分大小写必须大写 MHashMap推荐简写new HashMap()无需重复书写泛型。二、HashMap 三个核心内置方法用法与踩坑1. put(key, value)作用向哈希表存入一组「键值对」本题用法hashtable.put(nums[i], i)key 存数组数字value 存数字对应的下标易错点两个参数用逗号分隔顺序不能颠倒不能写成 put (下标数字)2. containsKey(key)作用查询哈希表中是否存在指定的键 key返回布尔值 true/false本题用法hashtable.containsKey(target - nums[i])查询互补数字是否已经存入哈希表致命错误写成containskey()k 小写Java 区分大小写正确是containsKey()K 大写3. get(key)作用根据传入的 key取出对应的 value 值只允许传入 1 个参数本题用法hashtable.get(target - nums[i])通过互补数字取出它的下标高频踩坑错误get(target - nums[i], i)把数组第二个元素 i 写进 get 的小括号参数数量超标报错正确写法逗号和 i 放在外层数组{}里三、概念逻辑误区Map 存储规则put(数组数字, 对应下标)key 存元素数值value 存下标返回下标顺序先取哈希表中更早元素下标hashtable.get(...)后放当前循环下标i顺序不能颠倒。四、代码格式规范问题二元运算符两侧加空格target-nums[i]→target - nums[i]for 循环分号后、右括号)与左大括号{之间补空格逗号、泛型内部逗号后统一添加空格。五、Java 返回路径强制规则暴力 / 哈希解法通用方法返回值为int[]所有执行路径必须存在返回语句循环结束后写return new int[0];兜底仅满足语法校验题目保证输入一定存在解该代码不会实际执行。六、补充区分知识点标准创建哈希表固定语法Map键类型, 值类型 变量名 new HashMap();两种兜底写法暴力解法用throw 异常哈希解法用return 空数组作用都是补齐代码返回路径。