两数之和
题目:
解析:
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result=new int[2];
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(target==nums[i]+nums[j]){
result[0]=i;
result[1]=j;
return result;
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
用这种方法,会提示不通过,因为时间复杂度过大
import java.util.HashMap;
import java.util.Map;
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(target-nums[i])){
return new int[]{hashtable.get(target-nums[i]),i};
}
hashtable.put(nums[i],i);
}
return new int[0];
}
}
方法二思想参考于leecode官方解法