怎样将建设银行网站加入可信站,沧州机械类网站建设,网站改版换了域名,完整网站项目的逻辑#x1f339;作者:云小逸 #x1f4dd;个人主页:云小逸的主页 #x1f4dd;Github:云小逸的Github #x1f91f;motto:要敢于一个人默默的面对自己#xff0c;强大自己才是核心。不要等到什么都没有了#xff0c;才下定决心去做。种一颗树#xff0c;最好的时间是十年前… 作者:云小逸 个人主页:云小逸的主页 Github:云小逸的Github motto:要敢于一个人默默的面对自己强大自己才是核心。不要等到什么都没有了才下定决心去做。种一颗树最好的时间是十年前其次就是现在学会自己和解与过去和解努力爱自己。希望春天来之前我们一起面朝大海春暖花开 专栏C 专栏Java语言专栏Linux学习 专栏C语言初阶专栏数据结构专栏备战蓝桥杯 文章目录前言例题 模拟散列表题目输入格式输出格式数据范围输入样例输出样例开放寻址法核心思想添加查找删除代码代码解析最后前言
今天这篇文章接着上一篇文章【哈希表拉链法】继续说解决哈希表冲突的第二种方法开放寻址法。 ——————————————————————————————
首先先写上几句话献给坚持创作的我和点开这篇文章希望进步的你 1. 世界上最厉害的人是说起床就起床说睡觉就睡觉说做事就做事说玩就玩说收心就收心说不爱 就不爱。
2.一定要狠下心来努力变成一个很厉害的人厉害到有一天你可以随时离开那些令你不舒服的圈子和人 让他们通通羡慕不已。
3.努力变得更厉害的原因是以后遇到喜欢的人除了真心还有其他东西可以拿得出手。
4.我以为别人尊重我是因为我很优秀。慢慢的我明白了别人尊重我是因为别人很优秀优秀的人更懂 得尊重别人。对人恭敬其实是在庄严你自己。
5. 五粮液从不骂茅台茅台也从不诋毁五粮液。双双成为世界名酒。人活着发自己的光就行没必要灭别人 的灯。
例题 模拟散列表
题目
维护一个集合支持如下几种操作 I x插入一个数 x Q x询问数 x 是否在集合中出现过 现在要进行 N 次操作对于每个询问操作输出对应的结果。
输入格式
第一行包含整数 N表示操作数量。接下来 N 行每行包含一个操作指令操作指令为 I xQ x 中的一种。
输出格式
对于每个询问指令 Q x输出一个询问结果如果 x 在集合中出现过则输出 Yes否则输出 No。 每个结果占一行。
数据范围
1≤N≤105 −109≤x≤109
输入样例 5 I 1 I 2 I 3 Q 2 Q 5 输出样例 Yes No 开放寻址法
核心思想
与拉链法类似要先建立一个哈希函数将原数组映射到哈希函数上 与拉链法相比开放寻址法只需要建立一个数组不用像拉链法那样再设置一个链表。 这里可以想象一下我们去上厕所的情景先从k的位置【k是该数在哈希函数的映射值】开始看是否有人有人就下一个坑位没人就占这个位置。
添加
从k的位置开始找看这个坑位是否有人有人就下一个
查找
从第k的坑位开始查找 当前坑位有人是x,则查找到了。 当前坑位有人但不是x则下一个。 当前坑位没有人说明x不存在。
删除
按照查找的方式如果找到x一般不会将x删掉只是打一个特殊的标志以示删除掉了x这个与拉链法类似。
代码
#include cstring
#include iostreamusing namespace std;const int N 200003;//题目要求N的范围是[0,10^5],但从经验上一维数组的长度要开到要求的2-3倍。//这样就可以最大程度地降低冲突的概率那么N取大于范围的第一个质数。
const int null 0x3f3f3f3f;//设置一个数表示这个坑位没有人即设定数组的初始化的值//且这个要在N的范围之外。int h[N];int find(int x)
{int t (x % N N) % N;while (h[t] ! null h[t] ! x)//表示坑位不为0且坑位内不是查找的值{t ;//看下一个坑位if (t N) t 0;//看完了最后的坑位要返回到第一个坑位循环回来看第一个坑位i}return t;//两种含义k在哈希表中返回k在哈希表的下标如果不在哈希表中则返回x应该存在哈希表的位置
}int main()
{memset(h, 0x3f, sizeof h);int n;scanf(%d, n);while (n -- ){char op[2];int x;scanf(%s%d, op, x);if (*op I) h[find(x)] x;else{if (h[find(x)] null) puts(No);else puts(Yes);}}return 0;
}代码解析
1.N的范围
const int N 200003;//题目要求N的范围是[0,10^5],但从经验上一维数组的长度要开到要求的2-3倍。//这样就可以最大程度地降低冲突的概率那么N取大于范围的第一个质数。2.初始化的值
const int null 0x3f3f3f3f;//设置一个数表示这个坑位没有人即设定数组的初始化的值//且这个要在N的范围之外。3.查找函数【核心操作】
int find(int x)
{int t (x % N N) % N;while (h[t] ! null h[t] ! x)//表示坑位不为0且坑位内不是查找的值{t ;//看下一个坑位if (t N) t 0;//看完了最后的坑位要返回到第一个坑位循环回来看第一个坑位i}return t;//两种含义k在哈希表中返回k在哈希表的下标如果不在哈希表中则返回x应该存在哈希表的位置
}
最后
十分感谢你可以耐着性子把它读完和我可以坚持写到这里送几句话对你也对我
1.我慢慢开始自渡了变得不悲不喜我接受世界上所有的不公平善良并带点锋芒我请求我自己热爱 生活热爱自己。
2.人最怕的就是清醒的堕落什么都懂却不行动没有压力无忧无虑没有目标加上一点迷茫到最 后还是维持现状。
3.我们总是喜欢用顺其自然来敷衍人生道路上的荆棘坎坷却很少承认真正的顺其自然其实是竭尽所能 之后的不强求 而不是两手一摊的不作为。
4.你把性格交给星座把努力交给鸡汤把运气交给锦鲤然后对自己说听过许多道理但依然过不好这一 生。倒也是过的好了才有鬼呢。
5. 你在人群中看到的每一个耀眼的人都是踩着刀尖过来的。你如履平地般地舒适坦然当然不配拥有任何 光芒。
最后如果觉得我写的还不错请不要忘记点赞✌收藏✌加关注✌哦(ω)
愿我们一起加油奔向更美好的未来愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油为自己点赞