
哈希表
俺叫西西弗斯
找份前端开发工作
都柏林理工大学博士拟录取(没钱读)
李莫瑞克大学硕士在读(主持爱尔兰软件研究中心)
重庆2022优秀毕业生
展开
-
[Acwing]AcWing 841. 字符串哈希
算法标签 哈希,字符串哈希题目简叙思路依据经验,我们使得数值尽量重复时需要限定:1.p最好是131或者133312.对数值%(226),我们刚好采取unsigned long long 溢出时的状态也是一致的这样几乎没有可能重复从而冲突将字符串的前缀转换为数来存值由于每位的权值是不一样的 所以每个前缀值都对应着唯一的一种字符串所以相减后的值也应该是唯一的 从而利用相减后的值可以判断字符串的区间段是否相等字符串str="ABCD"字符串前缀对应h[1]="A"h[2]="AB"原创 2020-07-31 18:14:50 · 384 阅读 · 0 评论 -
[Acwing]840. 模拟散列表
算法标签:哈希表题目简叙思路拉链法:数组加链表使用映射的方式把109映射到105的范围之内这样有可能多个数据在同一地址下,我们只需要把对应地址做成链表形式进行查询和插入即可注意:1.映射值为k=(tmp%N+N)%N;,为了避免tmp%N是负数所以+N,然后为了避免溢出再%N2.%N中N的数据最好是范围数据的第一个素数,这样在数学期望的角度上数组内重复的概率最小图显:插入与查找两种情况单链表可以参考[模板题]单链表代码#include<iostream>#inc原创 2020-07-31 16:08:06 · 201 阅读 · 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 · 188 阅读 · 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 · 180 阅读 · 0 评论 -
[LeetCode]剑指 Offer 03. 数组中重复的数字
算法标签 哈希表题目简叙思路代码使用哈希mapclass 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 · 729 阅读 · 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 · 220 阅读 · 0 评论