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

哈希表相关知识

 840. 模拟散列表

1、拉链法

要点1:const int N 最好是比100000大的第一个质数

求质数的代码:
int main(){
    for(int i=100000;;i++){
        bool flag=true;
        for(int j=2;j*j<=i;j++){
            if(i%j==0){
                flag=false;
                break;
            }
        }    
        if(flag){
            cout<<i<<endl;
            break;
        }
    }
    return 0;
}

拉链法

//拉链法
#include <bits/stdc++.h>
using namespace std;

const int N=100003;

int h[N],e[N],ne[N],idx;

void insert(int x){
    int k=(x%N+N)%N;//k为哈希值
    //在c++中,负数的模为负数,加N后肯定为正数
    e[idx]=x;
    ne[idx]=h[k];//新节点的next指向h[k]
    h[k]=idx++;//h[k]指向新节点
}

bool find(int x){
    int k=(x%N+N)%N;
    for(int i=h[k];i!=-1;i=ne[i]){
        if(e[i]==x){
            return true;
        }
    }
    return false;
    
}


int main(){
    int n;
    scanf("%d",&n);
    
    memset(h,-1,sizeof h);
    
    while(n--){
        char op[2];
        int x;
        scanf("%s%d",op,&x);//scanf读字符串可以自动把空格回车制表符忽略掉,就可以降低出错的概率
        //但是一般不用scanf读字符
        if(*op=='I')insert(x);
        else{
            if(find(x)) puts("Yes");
            else puts("No");
        }
    }
}


http://www.kler.cn/a/380909.html

相关文章:

  • 苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
  • linux socket编程之udp_dict_serve服务端--引入配置文件
  • MyBatis 中常用标签
  • 机器学习04-为什么Relu函数
  • git命令恢复/还原某个文件、删除远程仓库中的文件
  • R型+I型+J型指令
  • 解决wsl重启后debian配置vm.max_map_count不生效问题以及设置docker开机自启
  • Kafka在大数据处理中的作用及其工作原理
  • 20.04Ubuntu配置opencv并使用头文件
  • CSS--综合练习
  • 商业数据库 - oracle -数据字典
  • SQL 语法学习
  • Spring MVC 完整生命周期和异常处理流程图
  • MySQL学习正式篇
  • 浙江深大智能科技有限公司管控平台服务端存在任意文件上传漏洞
  • nginx安装ssl模块教程
  • java-web-day11-登录校验JWT令牌+过滤器
  • C#实现傅里叶变换算法
  • Spring框架和Spring Boot框架都使用注解来简化配置和提高开发效率,但它们之间存在一些区别
  • Python MySQL - PyMySQL连接数据库和相关操作
  • 【3D】基础概念
  • A014-基于Spring Boot的家电销售展示平台设计与实现
  • Rust 力扣 - 1343. 大小为 K 且平均值大于等于阈值的子数组数目
  • 单例模式的概念和用处
  • SD3模型的部署(本地部署)
  • 一篇文章速通Java开发Stream流(流水线开发附斗地主小游戏综合案例)