1 两数之和
题目
方法一 暴力求解
//指针移动到下一个,的下一个,因为不能重复使用同一个元素
//两个指针 一个固定不动,一个动
class Solution{
public int[] twoSum(int[] nums,int target){
for(int i=0;i<nums.length;i++){
for(j=i+1;j<nums.length;j++){
int sum=nums[i]+nums[j];
if(sum==target){
result[0]=i;
resutl[1]=j;
return result;
}
}
}
return result;
}
}
方法二 哈希解法
空间换时间
class Solution{
public int[] twoSum(int[] nums,int target){
int[] result=new int[2];
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
map.put(nums[i],i);
}
for(int j=0;j<nums.length;j++){
int diff=target-nums[j];
if(map.containsKey(diff) &&map.get(diff)!=j){
result[0]=j;
result[1]=map.get(diff);
return result;
}
}
return result;
}
}