首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构和算法
技术驿站
创建于2023-06-17
订阅专栏
本文主要收录工作和学习中遇到的数据结构和算法
等 18 人订阅
共24篇文章
创建于2023-06-17
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
算法技巧-前缀和
1. 技巧说明 前缀和算法,是用来快速求解数组中某一个区间的区间和的值,如果对于每一个询问,都可以在O(1)的时间复杂度内快速求解,如果使用枚举的思想,则平均复杂度为O(n),远高于O(1)的复杂度。
算法系列-最短路径Bellman-Ford算法和JAVA实现
基本介绍 算法步骤: 初始化:将源节点的距离设置为0,其他节点的距离设置为无穷大。 重复以下步骤(节点数量-1)次: 对图中的每条边进行松弛操作。如果通过当前边可以获得更短的路径,则更新目标节点的距离
算法系列-最短路径Dijkstra算法和JAVA实现
基本介绍 该算法的基本思想是通过逐步扩展节点的方式,逐渐确定从起始节点到其他节点的最短路径。算法维护两个集合:一个是已确定最短路径的节点集合,记为S;另一个是还未确定最短路径的节点集合,记为V-S。
数据结构-字符编码
ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最早的字符编码标准之一,于1963年由美国国家标准
数据结构-数字编码
基础知识 定义 数字编码是一种将数字数据转换为二进制形式的方法,以便计算机能够处理、存储和传输。它在计算机科学和信息技术领域起着重要作用,为数据的表示、压缩、加密以及通信提供了基础。 作用 数据表示:
数据结构-双向队列以及经典应用
基本介绍 双向队列的特点是可以在队列的前端和后端进行元素的插入和删除。这意味着你可以在队列的头部和尾部都执行入队出队操作和头部和尾部的访问 双向队列(Double-ended Queue)具有以下特点
数据结构-队列以及经典应用
基本介绍 将队列的头部称为“队首”,尾部称为“队尾”,将把元素加入队尾的操作称为“入队”,删除队首元素的操作称为“出队” 特点: 先进先出(FIFO):队列中的元素按照它们进入队列的顺序进行处理,最先
数据结构-栈以及经典应用
基本介绍 栈可以看作是一种特殊的线性表,只能在一端进行插入和删除操作,该端被称为栈顶,另一端被称为栈底。栈的操作包括入栈(Push)和出栈(Pop),入栈将元素放入栈顶,出栈将栈顶元素移除。 JAVA
算法系列-Brian Kernighan算法和JAVA实现
Brian Kernighan算法的起源可以追溯到1970年代早期,当时计算机的存储容量非常有限,人们对于优化代码和节省内存空间的需求非常迫切。在那个时候,统计一个整数的二进制表示中有多少个位为1是一
算法技巧-位操作
位操作符和其含义 按位与(AND):使用符号 "&" 表示,将两个操作数的对应位进行逻辑与运算。只有当两个操作数的对应位都为1时,结果位才为1,否则为0。 按位或(OR):使用符号 "|" 表示,将两
算法系列-Boyer-Moore算法和JAVA实现
基本介绍 Boyer-Moore算法的核心思想是根据模式串(要搜索的字符串)的特点,通过预处理生成两个启发式规则:坏字符规则(Bad Character Rule)和好后缀规则(Good Suffix
算法系列-KMP算法和JAVA实现
基本介绍 KMP 方法利用 之前判断过的信息,通过一个 next 数组,保存模式串中前后最长公共子序列的长度,每次回溯时,通过 next 数组找到前面匹配过的位置,省去了大量的计算时间。 思路分析 以
算法系列-遗传算法和JAVA实现
基本概述 遗传算法的基本思想是通过对候选解进行编码,然后通过遗传操作(选择、交叉和变异)来生成新的解,并对解的质量进行评估和选择。这个过程模拟了自然界中的遗传和进化过程,不断迭代直到找到满足特定条件的
算法技巧-各种排序算法(三):JDK中排序算法经典使用
JDK中主要由Arrays提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类 基本类型:采用调优的快速排序 对象类型:采用改进的归并排序 int数组类型排序 源
算法技巧-各种排序算法(二)
经典排序算法 冒泡排序(Bubble Sort) 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历待排序序列,每次比较相邻的两个元素,如果它们的顺序错误就交换位置,直到整个序列排序
算法技巧-各种排序算法(一)
排序算法分类 可以飞分为比较类排序和非比较类排序 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定
JAVA实现的LRU算法
实现1,通过linkedHashMap实现 实现2,复写linkedHashMap public class LRUCache2<T,K>
算法技巧-跳表(Skip List)(一):介绍、ConcurrentSkipListMap源码分析
介绍 跳跃表(简称跳表)由美国计算机科学家William Pugh发明于1989年。他在论文《Skip lists: a probabilistic alternative to balanced t
算法技巧-跳表(Skip List)(二):应用场景和手撕代码实现
应用场景 REDIS 有序结合 ZSet介绍 ZSet结构同时包含一个字典和一个跳跃表,跳跃表按score从小到大保存所有集合元素。字典保存着从member到score的映射。这两种结构通过指针共享相
算法衡量标准-时间复杂度和空间复杂度
算法含义 算法 Algorithm是在有限时间内解决特定问题的一组指令或操作步骤。算法具有以下特性: 问题是明确的,包含清晰的输入和输出定义。 具有可行性,能够在有限步骤、时间和内存空间下完成。 各步
下一页