学习目标:
一周刷6个
学习内容:
两数之和 哈希表
考虑到用暴力破解的话时间复杂度为O(n²),那么要降低时间复杂度就要损耗掉空间,这样才能降低时间复杂度,用一遍哈希时间复杂度诶O(n)。
用到hashMap对象的get()、put()、containsKey()方法。
执行用时2ms。
遍历数组的思路:定义一个值为temp = target-num[i],然后判断该值temp是否在哈希表中,如果在那就返回哈希表中的该temp的索引下标,
不在的话就把键值对存进哈希表中。
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map=new HashMap<Integer, Integer>();
for (int i = 0,len = nums.length;i<len;i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
return new int [] {map.get(temp),i};
}
map.put(nums[i],i);
}
throw new
IllegalArgumentException("no two sum solution");
}
学习时间:
下班后