算法通关村-----哈希和队列的基本知识

哈希概念

哈希也称为散列,就是把任意长度的输入,通过散列算法,变成固定长度的输出,这个输出值就是散列值。

哈希存储

现在有1,2,3…15,要将其存储到大小为7的哈希表中,应该如何存储

首先选择哈希函数 index = number % 7

通过哈希函数,可以将要存储的数据映射为对应的下标。

结果如图所示

存储

哈希冲突

很明显,按照上面的哈希函数进行存储会出现碰撞,即不同的输入经过散列函数得到的输出是相通的。很明显数组的同一位置不能存储两个元素。应该如何解决呢

处理方法

开放定址法

一旦发生冲突,就去寻找下一个散列地址,只要散列表足够大,总能找到空的散列地址,并将记录录入。

链地址法

将哈希表的每个单元作为链表的头节点,所有哈希地址为i的元素构成一个链表,形成数组➕链表的形式,HashMap的JDK7就是如此,在JDK8改成数组➕链表➕红黑树的形式,做了进一步优化。

队列概念

队列也是访问受限的线性表,遵循先入先出规则,即先入队的元素先出队,后入队的元素后出队。队列同样可以使用数组和链表实现。下面是链表实现队列的方式

public class ListQueue {private Node front;private Node rear;private Integer size;public ListQueue() {front = new Node(-1);rear = new Node(-1);size = 0;}public void push(int value) {Node node = new Node(value);Node iter = front;while (iter.next != null) {iter = iter.next;}iter.next = node;rear = node;size++;}public int pull() {Node node = front.next;if (node == null) {throw new RuntimeException("队列已空");}front = node.next;size--;return node.data;}public int getLength(){return size;}
}class Node {int data;Node next;public Node(int data) {this.data = data;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/114469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OS 死锁处理

如果P先申请mutex 则mutex从1置零,假设申请到的empty 0则empty变成-1阻塞态 同理C中mutex从0变为-1,那么如果想离开阻塞态,那么就需要执行V(empty)但是如果执行V(empty)就需要P(mu…

什么是跨域(cross-origin)请求,如何解决跨域问题?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 跨域请求和跨域问题⭐ 解决跨域问题的方法1. CORS(跨域资源共享)2. JSONP(JSON with Padding)3. 代理服务器4. WebSocket5. 使用服务器中继 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff…

python爬取bilibili,下载视频

一. 内容简介 python爬取bilibili,下载视频 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接:https://pan.baidu.com/s/1WuXTso_iltLlnrLffi1kYQ?pwd1234 三.主要流程 3.1 下载单个视频 代码 import requests impor…

C# 多线程交替按照指定顺序执行

1.关于AutoResetEvent和ManualResetEvent的区别解释如下: AutoResetEvent和ManualResetEvent是.NET中的两个线程同步类。它们之间的主要区别在于其释放信号的方式以及对等待线程的影响。 AutoResetEvent的作用是在等待的线程被信号唤醒后,将信号自动重…

Flink CDC学习笔记

第一章 CDC简介 1.1 什么是CDC ​ CDC (Change Data Capture 变更数据获取)的简称。核心思想就是,检测并获取数据库的变动(增删查改),将这些变更按发生的顺序记录下来,写入到消息中间件以供其它服务进行订…

什么是Python爬虫分布式架构,可能遇到哪些问题,如何解决

目录 什么是Python爬虫分布式架构 1. 调度中心(Scheduler): 2. 爬虫节点(Crawler Node): 3. 数据存储(Data Storage): 4. 反爬虫处理(Anti-Scraping&…

OpenCV(一):Android studio jni配置OpenCV(亲测有效,保姆级)

目录 1.下载OpenCV的SDK 2.创建Android Native C项目 3.Android项目中导入OpenCV工程 4.导入OpenCV的库文件 5.实现opencv高斯模糊图像处理的demo 要在Android Studio中配置使用OpenCV库的C方法,需要完成以下步骤: 1.下载OpenCV的SDK 首先&#x…

GIT命令只会抄却不理解?看完原理才能事半功倍!

系列文章目录 手把手教你安装Git,萌新迈向专业的必备一步 GIT命令只会抄却不理解?看完原理才能事半功倍! 系列文章目录一、Git 的特征1. 文件系统2. 分布式 二、GIT的术语1. 区域术语2. 名词术语1. 提交对象2. 分支3. HEAD4. 标签&#xff0…

【python爬虫】6.爬虫实操(带参数请求数据)

文章目录 前言项目:狂热粉丝分析过程什么是带参数请求数据如何带参数请求数据 代码实现被隐藏的歌曲清单什么是Request Headers如何添加Request Headers 复习 前言 先来复习一下上一关的主要知识吧,先热个身。 Network能够记录浏览器的所有请求。我们最…

Go:关于‘fresh‘ 不是内部或外部命令,也不是可运行的程序问题的解决方案

如果你使用了go get命令来安装fresh包,那么fresh命令可能没有被正确添加到系统的PATH环境变量中,需要修改你的fresh.exe的文件存放位置。 一般而言,你会将GO的安装文件夹Go与工作区文件夹GoProjects分开(你的文件夹名称与我的不同…

Docker Compose 安装使用 教程

Docker Compose 1.1 简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的 快速编排 。从功能上看,跟 OpenStack 中的 Heat 十分类似。 其代码目前在 https://github.com/docker/compose 上开源。 Compose 定位是 「定义和运行多个…

Linux音频了解

ALPHA I.MX6U 开发板支持音频,板上搭载了音频编解码芯片 WM8960,支持播放以及录音功能! 本章将会讨论如下主题内容。 ⚫ Linux 下 ALSA 框架概述; ⚫ alsa-lib 库介绍; ⚫ alsa-lib 库移植; ⚫ alsa-l…

计算机网络 第二节

目录 一,计算机网络的分类 1.按照覆盖范围分 2.按照所属用途分 二,计算机网络逻辑组成部分 1.核心部分 (通信子网) 1.1电路交换 1.2 分组交换 两种方式的特点 重点 2.边缘部分 (资源子网) 进程通信的方…

如何在 iPhone 上检索已删除的短信

我厌倦了垃圾短信。当我例行公事地删除 iPhone 上的这些不需要的消息时,当我分散注意力时,我通过点击错误的按钮清除了所有消息。这些被删除的消息中包含两条团购验证信息。有什么办法可以从 iPhone 检索我的消息吗? 有时我们可能会不小心删…

iOS 使用coreData存贮页面的模型数据中的字典

我们使用coreData时候,会遇到较为复杂的数据类型的存贮,例如,我们要存一个模型,但是一个模型里面有个字典,这时候,我们该如何存贮呢 如图所示,一个对象中含有一个字典 我们实现一个公共的方法…

Python小知识 - 使用Python进行数据分析

使用Python进行数据分析 数据分析简介 数据分析,又称为信息分析,是指对数据进行综合处理、归纳提炼、概括总结的过程,是数据处理的第一步。 数据分析的目的是了解数据的内在规律,为数据挖掘,并应用于商业决策、科学研究…

java 批量下载将多个文件(minio中存储)压缩成一个zip包

我的需求是将minio中存储的文件按照查询条件查询出来统一压成一个zip包然后下载下来。 思路:针对这个需求,其实可以有多个思路,不过也大同小异,一般都是后端返回流文件前端再处理下载,也有少数是压缩成zip包之后直接给…

登录校验-Filter-登录校验过滤器

目录 思路 登录校验Filter-流程 步骤 流程图 登录校验Filter-代码 过滤器类 工具类 测试登录 登录接口功能请求 其他接口功能请求 前后端联调 思路 前端访问登录接口,登陆成功后,服务端会生成一个JWT令牌,并返回给前端&#xff0…

Vue中使用qrcode实现渲染二维码中间添加自定义logo-demo

效果 使用 import QRCode from qrcode; 具体生成过程 <template><div class"banner-login"><img :src"qrDataUrl" /></div> </template><script setup> import { ref, reactive } from vue; import QRCode from q…