暴力破解法,运用数组两数之和相加,直到两数之和相加成目标值为止。但时间复杂度为O(1)
代码语言:javascript复制class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
int n = nums.length;
for(int i=0;i<n;i ){
for(int j=i 1;j<n;j ){
if(nums[i] nums[j]==target){
result[0]=i;
result[1]=j;
break;
}
}
}
return result;
}
}
哈希表方法:通过利用哈希表存储,我们通过哈希表,查找表中是否有target-nums[i]这个数据,
若没有,哈希表插入x,并伴随记录数组位置。、
哈希表方法将时间复杂度降低到从 O(N) 降低到 O(1)
代码语言:javascript复制class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> ht=new HashMap<Integer,Integer>();
for(int i = 0;i < nums.length;i ){
if(ht.containsKey(target-nums[i])){
return new int[]{ht.get(target-nums[i]),i};
}
ht.put(nums[i],i);
}
return new int[0];
}
}