leetcode-hot100两数之和
·

两种方法:
暴力枚举法
直接双重循环遍历是否存在数组中两个数相加为target
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target){
return new int[]{i,j};
}
}
}
return new int[0];
}
}
通过HashMap中的containsKey方法来判断数组中是否存在
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[0];
}
}
创建一个Map集合Key为数组中的值,Value为下标。首先循环遍历nums,判断Map中是否存在与当前下标nums[i]相加为target的数,如果存在返回该数的Value以及i。然后将其放入map集合中继续向下遍历
更多推荐

所有评论(0)