当前位置: 首页 > news >正文

模拟散列表(算法题)

在这里插入图片描述

#include <bits/stdc++.h>
using namespace std;// 哈希表的大小设置为200003(质数减少冲突概率)
const int N = 200003;
// 用0x3f3f3f3f表示空位,该值通常不在输入数据范围内
const int null = 0x3f3f3f3f;
int h[N]; // 哈希表数组,初始化为null/** 查找x在哈希表中的位置,若存在返回其索引,否则返回应插入的位置* 使用线性探测解决冲突*/
int find(int x)
{// 计算初始哈希值,处理负数情况:(x % N + N)确保结果非负// 例如:x=-5时,t = (-5 % 200003 + 200003) % 200003 = 199998int t = (x % N + N) % N;// 当当前位置非空且不等于x时,继续查找// 模拟:假设x=100,t=100,但h[100]已被占用,则t递增到101、102...直到找到空位或x的位置while (h[t] != x && h[t] != null) {t++; // 线性探测下一位置if (t == N)t = 0; // 循环到表头继续查找}// 返回找到的位置,可能是x的位置或可插入的空位return t;
}int main()
{// 初始化哈希表,所有位置设为nullmemset(h, 0x3f, sizeof(h));int n;cin >> n;string op;int x;while (n--) {cin >> op >> x; // 读取操作符和数值int t = find(x); // 查找x的位置if (op == "I") {// 插入操作:无论t位置是否已被占用,都存入x(覆盖旧值)// 例如:若x=100的t=100且h[100]为空,则直接插入;若冲突则存入后续位置h[t] = x;} else {// 查询操作:检查t位置是否为x// 例如:若h[t]==x则存在,否则不存在if (h[t] == null)cout << "No" << endl;elsecout << "Yes" << endl;}}return 0;
}

此篇参考了acwing算法基础课。

http://www.xdnf.cn/news/347581.html

相关文章:

  • Vue3中emits和emit
  • Qwen3中的MoE是如何平衡专家负载的?
  • 跨线程和跨进程通信还有多种方式对比
  • JS 下载data:image/png;base64, 图片
  • 告别手动输入密码:基于SSHPass的自动化文件传输实践告别手动输入密码:基于SSHPass的自动化文件传输实践
  • Marin说PCB之器件的3D数模匹配失效案例
  • 在微程序控制器中,各概念之间的详细关系
  • IEEE出版|2025年物联网、数据科学与先进计算国际学术会议(IDSAC2025)
  • MyBatis 动态 SQL 完整笔记
  • 深泽多层电路在PCB行业中属于什么水平
  • laravel 使用异步队列,context带的上下文造成反序列化出问题
  • sql server限制用户只能访问特定表
  • PWN基础-ROP技术-ret2syscall-64位程序栈溢出利用
  • el-table合并单元
  • 【基础知识】李雅普诺夫方程与李雅普诺夫函数
  • 985高校查重率“隐性阈值”:低于5%可能被重点审查!
  • 从艾米・阿尔文看 CTO 的多面特质与成长路径
  • 英皇娱乐X乐华娱乐携手造星!“英皇乐华青少年艺人培训班”正式启动!
  • 深度学习-159-综述之混合专家模型和推理模型以及工作流和智能体的概念
  • Elastic:如何构建由 AI 驱动的数字客户体验策略
  • 计算机网络-LDP工作过程详解
  • 代码随想录算法训练营第60期第三十天打卡
  • C++之set和map的运用
  • MySQL 数据库
  • AI人工智能在交通物流领域的应用
  • web 自动化之 Selenium 元素定位和浏览器操作
  • 探索 C++ 在行业应用与技术融合中的核心价值
  • Baklib构建AI就绪知识管理体系
  • 湖北理元理律师事务所的企业债务重组实践:挽救实体经济的法律处方
  • B站pwn教程笔记-8