给定一个整数nums和一个目标值target,在该数组中找出和为目标值的那两个整数,并返回下标
不能重复利用这个数组的相同的元素
例如
给定nums=[2,7,11,17],target=9
因为nums[0]+nums[1]=2+7=9
返回下标,0,1
方法一
这个方法简单粗暴,我们将数组都遍历一遍,找出符合这个条件的两个值,具体代码如下:
class Solution {
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};
}
}
return null;
}
}
复杂度分析
- 时间复杂度O(n²),对于某个元素,我们试图通过遍历数组的其余部分来寻找他所对应的目标元素,这将耗费O(n)的时间,因此时间复杂度为O(n²)
- 空间复杂度:O(1)
方法二:两遍哈希表
为了对运行时间复杂度进行优化,