25_03_06 & 3_7 哈希表
1.有效的字母异位符:如果组成相同,那么排序后肯定是一样的,天哪
2.快乐数:定义无限循环:
某一些数值重复出现,重复出现,重复出现,所以可以在hash表中判定是否已经出现过了,厉害吧
3.两数之和:
先找后存
4.三数之和:在两数之和的基础上添加了一个变量,所以基于两数之和的解放上,哈希已经不适用了,暴力永远在超时,只剩下双指针了。
所以,要用双指针给时间复杂度降一维度
sort(nums);
for(int i = 0;i<nums.size();i++){
}
有多少个指针就对多少个指针去重
第一指针 i:
if(i > 0 && nums[i] == nums[i-1]) continue;
第二/三指针 left/right
while(left < right nums[left] == nums[left+1]) left++;
5.四数之和:换汤不换药,注意第二个for的去重条件是 >i+1 ,可以剪枝
总结:
核心是哈希的只有简单题小透明

浙公网安备 33010602011771号