包括暴力解法和哈希表(包含各人理解)两种解法
题目:
java
class Solution {
public int[] twoSum(int[] nums, int target) {
// 暴力解法
// int length=nums.length;
// for(int i=0;i<length;i++){
// for(int j=i+1;j<length;j++){
// if(nums[i]+nums[j]==target){
// return new int[]{i,j};
// }
// }
// }
// return new int[0];
// 采用哈希表的形式 键值对
Map<Integer, Integer> hashtable=new HashMap<Integer,Integer>();
// key:值 value:数组下标 i
for(int i=0;i<nums.length;i++){
// hashtable.containsKey(x):判断哈希表中是否已经记录过x,返回boolean型
if(hashtable.containsKey(target-nums[i])){
return new int[]{hashtable.get(target-nums[i]),i};
// 返回一个新数组,然后hashtable.get(值)对应的下标是什么
}
hashtable.put(nums[i],i);
// 放入当前的值和下标,要先查再放,这样时间复杂度低
}
return new int[0]; //找不到的话返回空数组
}
}