哈希表

一、有效的字母异位词

思想一:数组排序

思想二:哈希表,建立长度为26的数组,利用ASCII码遍历s中字母出现的次数,并在t的遍历中依次减去出现次数,最后再遍历数组,全零则为异位词

思想三、map键值对,类似思想二

 

二、两数组交集

使用Set 数据结构,自动处理数组中的重复元素

 

  • Set 适用于存储唯一值,常用于去重和集合运算。
  • Map 适用于存储键值对,常用于建立键与值之间的映射关系。

 

三、快乐数

无限循环=>sum重复出现

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法了

 

四、两数之和

暴力=>双重for循环先i遍j

需要判断一个元素是否出现在集合中,用哈希法。遍历j,用target-nums[j]结果是否在哈希表中判断

暴力双循环,每次两个数相加,用O(1)的时间得到O(1)的结果

哈希表,每次循环,用O(1)的时间得到O(n)的结果

 

五、四数相加

多数运算结果=指定值 =>两数相加

a+b+c+d=0 => c+d=0-a-b,四数->两数,四数分属不同数组,且要求输出次数,map的value值考虑存放次数

 

六、赎金信

数组在哈希表中的应用

 

七、三数之和

思想:双指针,先排序,再从头遍历,左边指遍历位置+1,右边指最右(双重循环,第一重遍历i的右边,第二重遍历左右指针)

去重操作,排序之后,注意对比的是前一个的值,(如果对比后一个会把第一组值丢掉,比如[-1, -1, 2])

在sum=0之后也要考虑去重,nums[l]=nums[l+1],以及nums[r]=nums[r-1]的情况都要移动相应指针

 

八、四数之和

三数之和的基础上再嵌套循环,但注意第二重循环的去重判断

posted @ 2024-03-07 15:01  林晚n  阅读(26)  评论(0)    收藏  举报