
哈希表
俺叫西西弗斯
找份前端开发工作
都柏林理工大学博士拟录取(没钱读)
李莫瑞克大学硕士在读(主持爱尔兰软件研究中心)
重庆2022优秀毕业生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[Acwing]AcWing 841. 字符串哈希
算法标签 哈希,字符串哈希 题目简叙 思路 依据经验,我们使得数值尽量重复时需要限定: 1.p最好是131或者13331 2.对数值%(226),我们刚好采取unsigned long long 溢出时的状态也是一致的 这样几乎没有可能重复从而冲突 将字符串的前缀转换为数来存值 由于每位的权值是不一样的 所以每个前缀值都对应着唯一的一种字符串 所以相减后的值也应该是唯一的 从而利用相减后的值可以判断字符串的区间段是否相等 字符串 str="ABCD" 字符串前缀对应 h[1]="A" h[2]="AB"原创 2020-07-31 18:14:50 · 396 阅读 · 0 评论 -
[Acwing]840. 模拟散列表
算法标签:哈希表 题目简叙 思路 拉链法: 数组加链表 使用映射的方式把109映射到105的范围之内 这样有可能多个数据在同一地址下,我们只需要把对应地址做成链表形式进行查询和插入即可 注意: 1.映射值为k=(tmp%N+N)%N;,为了避免tmp%N是负数所以+N,然后为了避免溢出再%N 2.%N中N的数据最好是范围数据的第一个素数,这样在数学期望的角度上数组内重复的概率最小 图显: 插入与查找两种情况 单链表可以参考[模板题]单链表 代码 #include<iostream> #inc原创 2020-07-31 16:08:06 · 217 阅读 · 0 评论 -
[LeetCode]剑指 Offer 56 - II. 数组中数字出现的次数 II
算法标签:哈希 题目简叙 思路 哈希表 代码 class Solution { public:剑指 Offer 56 - II. 数组中数字出现的次数 II int singleNumber(vector<int>& nums) { unordered_map<int,int>mp; for(int it:nums)mp[it]++; for(int i=0;i<nums.size();i++)原创 2020-07-28 17:50:27 · 195 阅读 · 0 评论 -
[LeetCode]剑指 Offer 50. 第一个只出现一次的字符
算法标签 哈希表 题目简叙 思路 哈希表统计 代码 class Solution { public: map<char,int>mp; char firstUniqChar(string s) { for(auto x:s)mp[x]++; string ans= " "; for(auto it:s) if(mp[it]==1){ ans=it;原创 2020-07-24 16:35:34 · 186 阅读 · 0 评论 -
[LeetCode]剑指 Offer 03. 数组中重复的数字
算法标签 哈希表 题目简叙 思路 代码 使用哈希map class Solution { public: int findRepeatNumber(vector<int>& nums) { map<int,int>mp; for(auto it:nums)mp[it]++; int ans=0; for(auto it:mp)if(it.second>1){ans=it.first;break;}原创 2020-07-23 23:58:45 · 742 阅读 · 0 评论 -
[LeetCode]1207. 独一无二的出现次数
算法标签 哈希表 题目简叙 思路 用map来记录值键对 这个时候 it::map it.second记录的是不同的数值总共出现了几次 用set计算map存储的数值 如果second 重复了,就代表不是独一无二,否则就继续插入下一个 代码 class Solution { public: bool uniqueOccurrences(vector<int>& arr) { map<int,int>mp; set<int>st原创 2020-07-23 23:41:23 · 230 阅读 · 0 评论