![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hashmap
高木同学丶
此人不懒,但是他什么都不想写
展开
-
Leetcode刷题笔记——1995. 统计特殊四元组【哈希表的应用】
题目思路a+b+c=d可以转化为a+b=d-c,且a<b<c<d,那么可以将数组分为两部分,右边部分为cd,左边部分为ab。取一条分界线,该分界线位于右侧倒数第二个元素前,即意味着此时cd都只有一个选择,固定c为分界线的后一个元素,则d在c+1~n之间遍历,b在c-1~1之间遍历,a在1~b之间遍历。用哈希表存下nums[d]-nums[c]出现的次数,随后在左侧遍历时统计nums[a]+nums[b]出现的次数,将此次数累加即可得到结果代码class Solution {原创 2021-12-29 20:25:52 · 301 阅读 · 0 评论 -
Leetcode刷题笔记——904. 水果成篮【哈希表、滑动窗口】
题目思路理解完题目即可发现,这题的本质是要求数组中的最长连续子数组长度,不同的是这个连续子数组可以拥有两个不同的元素。由于存在不同的元素,首先可以想到用哈希表记录子数组不同元素的出现次数,该哈希表的长度应该不超过2,一旦超过2说明出现了第3种元素,需要将之前出现的2种元素中的任意一种剔除出去,这种右侧向右扩展,出现意外需要左侧运动的思路很容易想到滑动窗口。滑动窗口模板代码:int left=0;int len=0,res=0;for(int i=0;i<nums.size();i++){原创 2021-12-21 20:16:54 · 313 阅读 · 0 评论 -
Leetcode刷题笔记——506. 相对名次【hashmap】
题目思路本题实质上就是考排序,不过是排好序之后要所有元素记得原来的位置。那么只要排好序之后用hashmap存下当前排好序的元素与排序的联系即可(即用hashmap建立元素与排名之间的联系)复制一下score数组,对原数组进行排序,排好序后用hashmap记录元素与排序之间的关系,再根据原数组的元素找到hashmap对应的排名,即可。hashmapunordered_map<int, string> order; %此hashmap为int元素与string元素之间的映射关系代码原创 2021-12-02 21:21:46 · 339 阅读 · 0 评论