方法一:暴力法
复杂度分析:
- 时间复杂度:O(n2)
- 空间复杂度:O(1)
public class SolutionOne {
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[j] == target - nums[i]){
return new int[]{i ,j};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}
方法二:一遍哈希表
- 时间复杂度:O(n)
- 空间复杂度:O(n)
public class SolutionTwo {
public int[] twoSum(int[] nums, int target){
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0; i < nums.length ; i++){
int complement = target - nums[i];
if(map.containsKey(complement)){
return new int[]{map.get(complement),i};
}
map.put(nums[i],i);
}
throw new IllegalArgumentException("No two sum solution");
}
}