法1暴力求解
class Solution {
public int[] twoSum(int[] nums, int target) {
int len=nums.length;//.length不加括号
long a,b;
for(int i=0;i<len-1;++i)
{
a=nums[i];
for(int j=i+1;j<len;++j)
{
b=nums[j];
if((a+b)==target&&i!=j)
{
return new int[]{i,j};//不要新建一个数组再赋值返回,数组直接赋值用{}
}
}
}
return new int[]{0};
}
}
法2哈希法
class Solution {
public int[] twoSum(int[] nums, int target) {
int len=nums.length;
Map<Integer,Integer>hashMap=new HashMap<Integer,Integer>();
//HashMap用法
for(int i=0;i<len;++i)
{
if(hashMap.containsKey(target-nums[i]))
//若当前哈希表中存在和nums[i]匹配的值,就返回结果
//一定要先检查再放进表,否则有可能会检查到和自己匹配
{
return new int[] {hashMap.get(target-nums[i]),i};
}
hashMap.put(nums[i],i);
//若当前哈希表中不存在和nums[i]匹配的值,就把nums[i]存进表里
}
return new int[] {0};
}
}
哈希表找key的时间复杂度为O(1),比暴力求解法的O(N)好