![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希表
algsup
这个作者很懒,什么都没留下…
展开
-
[哈希表]leetcode1:两数之和(easy)
题目:题目链接:https://leetcode-cn.com/problems/two-sum/这里提供三种解法,代码如下(注解已给出):class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { /*题解1:暴力法 **遍...原创 2019-07-26 19:59:46 · 325 阅读 · 1 评论 -
[两数之和]leetcode2364:统计坏数对的数目(medium)
思路:hashmap 计数。原创 2022-08-08 20:32:58 · 288 阅读 · 0 评论 -
[hashmap][模拟]leetcode2365:任务调度器 II(medium)
代码】[hashmap][模拟]leetcode2365:任务调度器 II(medium)原创 2022-08-08 20:27:43 · 1361 阅读 · 0 评论 -
[两数之和][三指针]leetcode6136:算术三元组的数目(easy)
思路1:hashmap 查询。简单题 medium 做法。原创 2022-08-08 10:14:27 · 270 阅读 · 0 评论 -
[排序+哈希表]leetcode1331:数组序号转换(easy)
思路排序+hashmap。原创 2022-07-28 16:16:53 · 209 阅读 · 0 评论 -
[hashmap]leetcode532:数组中的 k-diff 数对(medium)
题目:题解:代码如下:原创 2022-06-16 09:16:52 · 130 阅读 · 0 评论 -
[hashset]leetcode2261:含最多 K 个可整除元素的子数组(medium)
题目:题解:提示1:枚举所有子数组并找到满足所有条件的子数组。显然使用双重 for 枚举所有满足题意的子数组。提示2:使用任何合适的方法对子数组进行散列,以避免重复。这个将所有子数组拼接成一个字符串,然后用来去除相同的子数组的,我确实没想到可以这样做。因此最终思路就是双重 for + hashset 去重即可。代码如下:class Solution {public: int countDistinct(vector<int>& a, int k原创 2022-05-22 09:04:26 · 162 阅读 · 0 评论 -
[哈希表]leetcode2260:必须拿起的最小连续卡牌数(medium)
题目:题解:思路:本题本质上是求相同元素的最短距离,因此使用一个 hashmap 来存储元素的下标即可,遇到相同元素时,计算二者之间的距离即可。代码如下:class Solution {public: int minimumCardPickup(vector<int>& a) { int res=1e5+10,n=a.size(); unordered_map<int,int> rec; for(in原创 2022-05-22 08:20:03 · 189 阅读 · 0 评论 -
[哈希表][数论]leetcode202:快乐数(easy)
题目:题解:class Solution { bool isHappy(int n) { /*解题思路1:被发现凡是不开心数,计算过程中肯定有4,这可能就是被称为不快乐的原因吧,4,死*/ while(n!=1&&n!=4) { int result=0; while...原创 2019-08-13 19:09:17 · 217 阅读 · 0 评论 -
[数组[hashset]leetcode128:最长连续序列(medium)
题目:题解:思路的话,把题目意思读懂了,直接看代码就好了。关于此题的标签还有并查集,我本人还没有学过,先留坑,以后慢慢填吧。代码如下:class Solution {public: //题解1:动态规划,时间复杂度O(nlogn),空间复杂度O(n) //思路:利用sort先排序在去重,然后求解dp数组。状态转移方程:若nums[i-1]+1==nums[i],...原创 2020-01-29 20:25:32 · 476 阅读 · 1 评论 -
[木桶效应][hashmap]leetcode1189:“气球” 的最大数量(easy)
题目:题解:思路:木桶效应即一只水桶能装多少谁取决于它最短的那块木板。对应题目中的text中’a’ ‘b’ ‘ll’ ‘oo’ 'n’的数量的最小值,所以遍历下字符串计数,然会返回最小值即可。代码如下:class Solution {public: // 木桶效应:一只水桶能装多少水取决于最短那块木板,对应本题中的'a' 'b' 'll' 'oo' 'n'的数量的最小值 int maxNumberOfBalloons(string text) { vec原创 2022-02-13 09:34:09 · 262 阅读 · 0 评论 -
[hashmap]leetcode1001:网格照明(hard)
题目:题解:思路:本题主要是思路难想,想到思路后编码什么的不复杂。题目需要把灯的坐标点所在行、列、主对角线、副对角线上所有点都照亮,对于行、列上光的数量,我们可以直接想到用hashmap来存储就好了。1)但是主、副对角线上的光的数量该如何表示呢?对于主对角线(主对角线的斜率为 1),我们可以使用该直线方程与 x 抽的交点作为主对角线上的数值,Y-y=X-x 令Y=0,得 X=x-y,所以用 x-y 来表示主对角线上的数值;对于副对角线(副对角线的斜率为 -1),我们可以使用该直线方程与 y原创 2022-02-08 18:37:44 · 557 阅读 · 0 评论 -
[hashmap]leetcode454:四数相加 II(medium)
题目:题解:思路:先用hashmap存nums1和num2中的两数之和的个数,然后再nums3和nums4中查询其两数之和的相反数之后存在来确定四数之和为0。代码如下:class Solution {public: // 思路:哈希表,统计nums1和nums2种的两数之和的组合,然后在nums3和nums4中查询有无相反数,来说明四数之和为0 int fourSumCount(vector<int>& nums1, vector<int>原创 2022-02-04 10:38:22 · 114 阅读 · 0 评论 -
[哈希表][排序+双指针]leetcode1726:同积元组(medium)
题目:题解:思路1:超时啦555排序+双指针,代码模拟《四数之和》,只不过指针 j 需要从后向前遍历,因为这样 a[i]*a[j] 才能被中间相对较小的数字相乘获得相同的积。若指针 j 也从头开始遍历的话,双指针的乘积必然大于 a[i]*a[j] 这样肯定是不行的(因为数组已经排序的过了,所以双指针的运算结果更大)。思路2:hashmap存储所有的两数之积,标准的四元组必定是相同的两数之积中两两组合,如乘积为 x 的个数为 y,那么标准的四元组的个数为 y*(y-1)/2,最后结果原创 2022-02-04 10:23:57 · 446 阅读 · 0 评论 -
[倒序滑动窗口]leetcode2156:查找给定哈希值的子串(medium)
题目:题解:由于使用了取模运算,除法应该采用乘法逆元实现,在mod不保证为质数情况下非常不优。因此我们需要使用倒序滑动窗口,维护大小为 k 的窗口内的 hash 值即可。代码如下:using LL = long long;class Solution {public: string subStrHash(string s, int pow, int mod, int k, int val) { int n=s.size(); // p用来保存p原创 2022-02-01 10:03:22 · 230 阅读 · 0 评论 -
[hashmap嵌套]leetcode2013:检测正方形(medium)
题目:题解:代码如下:class DetectSquares {public: // 使用哈希表嵌套,{y,{x,{点(x,y)的个数}}} unordered_map<int,unordered_map<int,int>> cnt; DetectSquares() { } void add(vector<int> p) { int x=p[0],y=p[1]; cnt原创 2022-01-26 10:45:13 · 395 阅读 · 0 评论 -
[滑动窗口][哈希表]leetcode219:存在重复元素 II(easy)
题目:题解:思路一:纯哈希表做建立 元素值->下标值得映射,遇到相同的元素值,只需判断下标值之差是否小于等于k即可,若满足情况,则直接返回 true,不然就更新相同元素值的下标为现在这个下标,这样可保证 i-j 尽可能地小。思路2:滑动窗口维护一个下标差值为 k 的滑动窗口,其大小为 k+1,用 set 作为窗口的数据结构,若窗口内存在重复值,表示找到符合题目条件的两个元素了,不然继续扩展窗口,直到遍历结束。代码如下:class Solution {public:原创 2022-01-20 10:50:44 · 359 阅读 · 0 评论 -
[两数之和][hash]leetcode1711:大餐计数(medium)
题目:题解:类比1. 两数之和,先查询补数,再插入当前数。思路:由数据范围可知两个数和的最大值为 2^21,所以我们每次查补数只需要查到 2^21 即可。a[i]+a[j] == 2^k,移项后a[j] == 2^k-a[i],所以我们每次做减法来查询 a[i] 的补数 a[j] 是否存在来更新 res,由于是从前往后遍历的,所以不会出现重解和漏解。时间复杂度O(21∗n)O(21*n)O(21∗n),空间复杂度O(n)O(n)O(n)。代码如下:const int mod =原创 2021-02-18 20:06:42 · 195 阅读 · 0 评论 -
[两数之和][hash]888. 公平的糖果棒交换(easy)
题目:题解:类比两数之和原创 2021-02-01 16:30:38 · 139 阅读 · 0 评论 -
[hash]leetcode1128:等价多米诺骨牌对的数量(easy)
题目:题解:利用hashmap做,较小的数字作十位,较大的数字作个位,这样等价的骨牌对可以映射到一个key了,value表示个数。代码如下:class Solution {public: // 题解:利用hashmap做,较小的数字作十位,较大的数字作个位,这样等价的骨牌队,可以映射到一个key了,value表示个数 int numEquivDominoPairs(vector<vector<int>>& dominoes) {原创 2021-01-17 22:25:53 · 164 阅读 · 0 评论 -
[哈希表]leetcode454:四数相加Ⅱ(medium)
题目:题解:class Solution {public: int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) { unordered_map<int,int> re...原创 2019-08-18 14:42:39 · 195 阅读 · 0 评论