简介
题目链接:https://leetcode.cn/problems/two-sum/description/
解决方式:数组 + 哈希表、暴力枚举
这是作者学习众多大神的思路进行解题的步骤,很推荐大家解题的时候去看看题解里面大佬们的思路、想法!
暴力枚举
解题思路:双重循环挨个挨个匹配,匹配上了就返回。
java
class Solution {
public int[] twoSum(int[] nums, int target) {
int n = nums.length;
for(int i = 0; i < n; i ++){
for(int j = i + 1; j < n; j ++){
if(nums[i] + nums[j] == target){
return new int[]{i,j};
}
}
}
return new int[0];
}
}
哈希表
思路:一次迭代,借助哈希表存储迭代的信息。key 是当前元素在之后数组中的另一个合数,借助哈希表的快速判断能力,快速查询是否存在两数之和等与 target。
java
class Solution {
public int[] twoSum(int[] nums, int target) {
// 哈希表,存储遍历信息
Map<Integer,Integer> hashtable = new HashMap<Integer,Integer>();
for (int i = 0; i < nums.length; i ++){
if(hashtable.containsKey(nums[i])){
// 返回结果
return new int[]{hashtable.get(nums[i]), i};
}
// key 为当前元素的目标元素(当前元素 + 目标元素 = target)
// value 为当前元素的索引
// 后续迭代中,如果迭代元素就等于 key 说明找到了两束子和等于 target
hashtable.put(target - nums[i], i);
}
return new int[0];
}
}