呼呼呼~开始刷算法题了,过程注定痛苦但是能看到自己的成长也是很快乐的事情啊!加油!!!
题目:
两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
我用的是暴力法= =
class Solution{
public int[] twoSum(int[]nums,int target){
int len = nums.length;
for(int i = 0;i<len;i++){
for(int j=i+1;j<len;j++){
if((nums[i]+nums[j])==target){
return new int[]{i,j};
}
}
}
return null;
}
更优解:
class Solution{
public int[] twoSum(int[]nums,int target){
int len = nums.length;
//键存储数组中的值,value是它的下标
HashMap<Integer,Integer>map=new HashMap<>();
//判断target-nums[i]是否在哈希表中,有的话返回这两个下标,没有的话把当前这个数和它的下标放到map集合中
for(int i =0;i<len;i++){
if(map.containsKey(target-nums[i])){
return int[]{i,map.get(target-nums[i])};
}
map.put(nums[i],i);
}
return null;
}
}