一、有效的字母异位词
思想一:数组排序
思想二:哈希表,建立长度为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]的情况都要移动相应指针
八、四数之和
三数之和的基础上再嵌套循环,但注意第二重循环的去重判断
标签:四数,哈希,nums,循环,数组,遍历 From: https://www.cnblogs.com/LiChaoyue-11/p/18056851