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 ,可以剪枝

总结:
核心是哈希的只有简单题小透明

posted @ 2025-03-07 15:16  Tongkuly  阅读(16)  评论(0)    收藏  举报