
数据结构与算法
文章平均质量分 92
本专栏系统讲解数据结构与算法,内容涵盖数组、链表、栈队列、树、图等常见结构,深入解析排序、查找、递归、动态规划、贪心、回溯等核心算法思想。结合 LeetCode 高频题实战演练,提供题解、思路分析与优化技巧,帮助读者提升算法思维与编程能力,轻松应对各类技术面试与工程场景。
讲文明的喜羊羊拒绝pua
拥有8年Java后端与大数据平台开发经验,曾在大疆等知名公司主导核心平台建设,具备丰富的架构设计与落地能力。擅长调度系统、存算分离湖仓架构与组件容器化,推动多个系统实现高可用、易扩展。在技术上,深入掌握Java并发编程与JVM调优,熟悉Spark、Flink、Kafka等大数据组件,具备DS、Amoro、Celeborn等开源项目贡献经验,具备强实战力与技术深度。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法——LeetCode编码练习01
本文总结了几种链表常见问题的解法,包括环形链表检测(141/142题)、快乐数判断(202题)、链表反转(206/92/25题)、旋转链表(61题)、节点交换(24题)和节点删除(19/83题)。主要使用了哈希表法和快慢指针法两种技术:哈希表法通过存储访问过的节点判断重复;快慢指针法则利用双指针不同步长检测环或定位特定位置。链表反转问题展示了迭代法的通用解法,而分组反转和删除问题则体现了对边界条件的处理技巧。这些解法涵盖了链表操作的核心模式,具有较高的实用价值。原创 2021-03-19 00:14:23 · 235 阅读 · 0 评论 -
LeetCode 付费题157. 用 Read4 读取 N 个字符解题思路
本文实现了一个read方法,通过read4 API从文件读取最多n个字符到缓冲区buf。核心思路是循环调用read4将数据分批读取到临时缓冲区,再复制到目标缓冲区,直到满足n个字符或文件结束。算法时间复杂度O(n),空间复杂度O(1),通过控制循环和边界条件确保正确性。示例展示了读取过程,适用于流式数据读取场景,处理了缓冲区不足和文件结束等情况。原创 2025-06-02 11:05:01 · 373 阅读 · 0 评论 -
leetcode付费题 353. 贪吃蛇游戏解题思路
摘要:本文介绍贪吃蛇游戏的设计与实现,重点关注游戏逻辑和碰撞处理。通过队列存储蛇身位置(队尾为蛇头),实现移动、边界检查和食物机制。核心算法包含坐标转换、碰撞检测(queue.contains())和特殊处理蛇尾碰撞。时间复杂度为O(L)(L为蛇长),空间复杂度O(L)。文中给出3x2网格的示例演示,并建议采用HashSet优化大型网格的碰撞检测。该实现简洁高效,适合中小型游戏场景。原创 2025-05-31 23:53:27 · 1227 阅读 · 0 评论 -
数据结构与算法(六)
1、四边形不等式技巧2、状态压缩的动态规划3、DC3生成后缀数组4、后缀数组解决面试题5、动态规划猜法中和外部信息简化的相关问题6、哈夫曼树7、最大网络流算法之Dinic算法原创 2024-01-05 09:14:14 · 452 阅读 · 0 评论 -
数据结构与算法(五)
1、哈希函数2、资源限制类题目3、有序表4、根据对数器找规律、根据数据量猜解法5、分治技巧、卡特兰数6、子数组达到规定累加和的最大长度系列问题、矩阵处理技巧题原创 2023-12-29 17:35:50 · 931 阅读 · 0 评论 -
数据结构与算法(四)
本文介绍了单调栈的原理及其应用。首先讲解了无重复数和有重复数两种情况下的单调栈实现方法,通过Java代码展示了如何获取数组中每个元素左右两侧第一个小于它的元素位置。接着探讨了两个典型应用场景:1)计算子数组累加和与最小值的乘积最大值,比较了暴力法和单调栈+前缀和优化两种解法;2)求解柱状图最大矩形面积问题,提供了三种实现方式(基于栈结构、数组模拟栈以及不同编码方式),均利用单调栈高效地找到每个高度的左右边界。这些案例充分展示了单调栈在处理"最近较小/较大元素"问题上的优越性。原创 2023-12-11 08:10:04 · 1066 阅读 · 0 评论 -
数据结构与算法(三)
1、链表及其相关面试题2、二叉树常见面试题和二叉树的递归套路3、贪心算法4、并查集5、图的数据结构、宽度&深度优先遍历6、最小生成树、最短路径问题原创 2023-10-14 22:58:14 · 263 阅读 · 0 评论 -
数据结构与算法(二)
1、时间复杂度、空间复杂度、排序算法和二分法2、异或运算3、单双链表4、归并排序5、堆排序6、快速快速7、前缀树8、基数排序原创 2023-09-23 23:15:49 · 279 阅读 · 0 评论 -
数据结构与算法(一)
位运算、前缀和、对数器、二分法、链表、二叉树、优先队列、排序算法原创 2023-09-17 17:26:54 · 1661 阅读 · 0 评论 -
数据结构与算法——2022每日一练(4月)
本文包含3道每日练习题:1)关于快速傅里叶变换(FFT)的说法均正确,包括其意义、算法原理和优化方法;2)Spring AOP不支持"织入通知"这一通知类型;3)@RequestMapping注解不包含"required"属性。每题均提供了正确答案(4.1选D,4.2选C,4.3选C),涉及数字信号处理和Spring框架的知识点。原创 2022-04-06 07:44:53 · 435 阅读 · 0 评论 -
数据结构与算法——2022每日一练(3月)
本文整理了21道计算机科学和信号处理相关题目,涵盖单调队列、哈希冲突、排序算法、Java并发编程、二分查找、傅里叶变换等内容。主要知识点包括:单调队列最大长度为3(3.2题);四种哈希冲突解决方法(3.3题);逆序对数量决定相邻交换次数(3.4题);归并排序和堆排序的时间复杂度(3.9题);信号频谱与时域关系(3.14-3.17题)等。每题均附答案和解析,适合快速复习核心概念。原创 2022-03-06 15:58:25 · 1092 阅读 · 0 评论 -
数据结构与算法——2022每日一练(2月)
2月每日一练题目涵盖RSA算法、二叉树遍历、JVM内存管理、链表特性、线程池原理、堆排序、动态规划等计算机科学核心知识点。重点解析包括:RSA加密过程(如n=p×q、密文C=Me mod n)、二叉排序树后序遍历、JVM新生代内存分配比例(8:1:1)、链表不能随机访问的特性、线程池四种工作状态、大根堆操作时间复杂度(O(log n))、动态规划爬楼梯问题解法(dp[i]=dp[i-1]+dp[i-2])等。所有题目均配有答案解析,涉及算法复杂度比较(如快速排序O(n log n)优于冒泡排序O(原创 2022-02-12 17:44:15 · 5105 阅读 · 0 评论 -
数据结构与算法——2022每日一练(1月)
本文整理了一系列技术相关的选择题及答案解析,涵盖Dubbo负载均衡、二叉排序树、RSA加密算法、Java基础、密码学基础等多个领域。主要内容包括:1)Dubbo的ConsistentHash负载均衡策略特点;2)不同序列构造二叉排序树的层次遍历差异;3)RSA算法加解密过程及密钥计算,包括欧拉函数、互质关系等数学基础;4)Java类加载、String对象创建等基础知识;5)密码学发展历史及RSA算法的安全性与破解方法。这些题目涉及计算机科学的核心概念,对理解分布式系统、数据结构和密码学有重要参考价值。原创 2022-01-02 20:51:06 · 1507 阅读 · 2 评论 -
数据结构与算法——每日一练(12月)
本文整理了一系列数学与计算机科学的每日练习题,涵盖数论、算法、Java编程和密码学等内容。主要内容包括:欧拉函数计算(如φ(97)=96)、因数分解与求和函数应用(如F(12)=28)、RSA算法原理与实现(如密钥生成和加密过程)、Java核心概念辨析(如ThreadLocal和JSP对象),以及数列与字符串处理(如前缀和与KMP算法)。题目配有详细解析,适合巩固基础知识和检验学习成果。原创 2021-12-01 21:32:42 · 1208 阅读 · 0 评论 -
数据结构与算法——LeetCode刷题02
本文介绍了二叉树的基本概念、性质和应用。重点内容包括:二叉树的性质证明(度为0的节点比度为2的多一个)、三种遍历方式(前序、中序、后序)以及特殊二叉树类型(完全、满、完美二叉树)。通过LeetCode经典题目展示了递归和迭代在二叉树遍历中的应用,如前序遍历的三种实现方法(递归、普通迭代、状态栈),以及N叉树遍历、二叉树翻转和层序遍历等算法。这些内容为理解高级数据结构和掌握递归技巧奠定了基础。原创 2021-11-03 22:09:56 · 474 阅读 · 0 评论 -
数据结构与算法——每日一练(11月)
摘要: 哈夫曼编码计算题涉及字符串编码后的比特数计算,通过对字符频率的统计和编码分配得出结果(如"AAAABCABBBC"编码后占用17比特)。 哈夫曼树的带权路径长度问题通过构建树结构计算(如{1,2,3,4,5}的带权路径长度为33)。 Java编程题考察继承、多态及并发知识(如volatile不保证原子性,ReadWriteLock适合读多写少场景)。 前缀和数列与树状数组的应用题解析了数列转换及树状数组的维护原理(时间复杂度为O(log n))。 数学题计算最大公约数(如208和原创 2021-11-03 21:51:18 · 1568 阅读 · 1 评论 -
数据结构与算法——LeetCode刷题01
本文总结了链表的基础知识和经典算法问题。主要内容包括:链表结构由数据域和指针域组成,适合动态插入删除(O(1))但不适合快速查找(O(n));经典实现方式包括指针法和数组模拟法;典型应用场景如动态内存分配和LRU缓存。重点解析了LeetCode环形链表检测(141/142)、快乐数判断(202)、链表反转(206/92)、K组反转(25)、链表旋转(61)和节点两两交换(24)等问题的解法,主要采用快慢指针、虚拟头节点等技巧,并给出Java代码实现。原创 2021-10-27 21:43:33 · 345 阅读 · 1 评论 -
数据结构与算法——每日一练(10月)
本文汇总了22道计算机科学相关题目,内容涵盖排序算法、JVM内存管理、JDBC、数据结构(字典树、哈夫曼编码)、Servlet等多个技术领域。主要知识点包括:内部排序的稳定性判断、JVM方法区的线程隔离特性、PreparedStatement的使用限制、插入排序的应用场景、哈夫曼编码的压缩原理等。题目类型包含选择题(如10.2关于JVM内存的错误说法)和判断题(如10.7二叉排序树的关键字唯一性),并附有详细解析(如10.13字典树空间复杂度分析)。这些题目可作为技术面试或知识自测的参考素材,涉及算法复杂度原创 2021-10-10 11:00:37 · 1652 阅读 · 0 评论 -
数据结构与算法——每日一练(9月)
本文摘要整理了9月份每日一练的26道计算机科学题目,涵盖数据结构、算法、数据库、编程语言等多个领域。主要内容包括:链表特性(随机访问不支持)、二叉树结点计算(2h-1)、DFS遍历序列验证、数据库死锁分类(事务故障)、SQL视图作用(安全性)、排序算法识别(快速排序)、递归函数计算(f(8)=9)、KMP算法复杂度(O(m+n))、Servlet初始化参数获取(ServletConfig)等。题目类型以选择题为主,部分配有解析说明,涉及知识点包括树结构、图遍历、排序算法、时间复杂度计算等计算机专业基础内容。原创 2021-09-02 00:18:10 · 900 阅读 · 0 评论 -
数据结构与算法——每日一练(8月)
本文汇总了28道Java与数据结构相关题目,涵盖集合操作、二叉树遍历、排序算法、内存管理等知识点。典型题目包括:Short类型集合操作导致元素未被移除(8.1)、KMP算法时间复杂度为O(m+n)(8.6)、链地址法解决哈希冲突的平均查找长度计算(8.27)等。重点涉及:栈容量判定(8.9)、最优二叉树带权路径(8.11)、折半查找比较次数(8.13)等算法分析。所有题目均附答案与解析,如8.22题通过匿名内部类重写hashCode方法输出42。适合检验Java基础与数原创 2021-09-02 00:08:58 · 1658 阅读 · 0 评论 -
数据结构与算法——每日一练(7月)
本文整理了7月1日至7月22日的每日编程练习题,内容涵盖数据结构、算法、Java编程等计算机基础知识。主要知识点包括:最小生成树的性质(7.1)、最短路径算法(7.2)、Java字符串运算(7.3)、Java修饰符(7.4)、快速排序(7.5)、拓扑排序时间复杂度(7.6)、二分查找(7.8)、希尔排序(7.9)、数组初始化(7.10)、三目运算符(7.11)、二叉树遍历(7.12)、线性表存储结构(7.13,7.21)等。每道题都配有答案和解析,适合计算机专业学生或编程爱好者进行日常练习和知识巩固。原创 2021-07-31 16:10:46 · 2547 阅读 · 0 评论 -
数据结构与算法——每日一练(6月)
本文摘要整理了21道计算机科学相关练习题,涵盖数据结构、算法、数据库、操作系统等多个领域。主要内容包括:顺序表查找的平均查找长度计算(6.1)、二分查找的最多比较次数(6.2)、哈希查找的时间复杂度分析(6.7)、图的边数计算(6.14-6.18)以及Java编程基础(6.12-6.13)等。重点解析了各种查找算法的时间复杂度和实现细节,并提供了标准答案和详细解析。这些题目有助于巩固计算机基础知识,提升算法分析与编程能力。原创 2021-06-30 19:13:01 · 3961 阅读 · 2 评论 -
数据结构与算法——每日一练(5月)
文章目录每日一练5.15.25.35.45.55.65.75.85.95.105.115.125.135.145.155.165.175.185.195.205.215.225.235.245.255.265.275.285.295.305.31每日一练5.1下面的程序打印输出的分别是( )?public class Main { public static void main(String[] args) { Integer f1 = 100, f2 = 100, f3原创 2021-06-01 09:05:07 · 2091 阅读 · 2 评论 -
数据结构与算法——每日一练(4月)
文章目录每日一练4.14.24.34.44.54.64.74.84.94.104.114.124.134.144.154.164.174.184.194.204.214.224.234.244.254.264.274.284.294.30每日一练4.1若将一棵树T转化为对应的二叉树BT,则下列对BT的遍历中,其遍历序列与T的后根遍历序列相同的是()A. 先序遍历B. 中序遍历C. 后序遍历D. 按层遍历【答案】B【解析】后根遍历树可分为两步:① 从左到右访问双亲结点的每个孩子(转化为二原创 2021-05-09 15:11:19 · 7686 阅读 · 0 评论 -
数据结构与算法——每日一练(3月)
本文整理了一系列关于数据结构和Java编程的练习题,涵盖单链表、循环队列、栈等数据结构的基本特性与操作,以及Java中单例模式、接口实现等知识点。主要内容包括:单链表的存储特点与操作复杂度(3.1-3.5);Java对象引用与接口实现(3.6-3.7);队列的基本运算与循环队列判断条件(3.8-3.12);栈的进出序列分析(3.15-3.19)等。所有题目均附答案与解析,适合计算机专业学习者巩固基础知识。原创 2021-05-09 15:08:13 · 3458 阅读 · 0 评论 -
数据结构与算法-05 图遍历、分治、动态规划
本文介绍了图数据结构的基本概念和应用场景。与线性表和树相比,图能够表示多对多的关系,由顶点和边组成。文章详细讲解了图的两种表示方式:邻接矩阵(二维数组)和邻接表(数组+链表),并通过代码案例演示了如何构建图结构。主要内容包括:1)图的定义和常用概念;2)邻接矩阵和邻接表的实现原理;3)图的创建和基本操作代码实现;4)图的深度优先遍历算法及其递归实现。最后通过具体示例展示了从顶点A开始的深度优先遍历过程。文章为理解图数据结构及其基本操作提供了入门指导。原创 2020-06-15 01:04:12 · 2009 阅读 · 2 评论 -
数据结构与算法-04 二叉树、多路查找树
本文介绍了二叉树的基本概念、存储优势及遍历方法。相比数组和链表,二叉树在数据检索、插入和删除操作上更高效。文章详细讲解了二叉树术语、满二叉树和完全二叉树的定义,并通过代码示例演示了前序、中序和后序三种遍历方式。此外,还提供了二叉树查找指定节点的实现方法,展示其在不同遍历方式下的比较次数。二叉树结构可以有效平衡数据存储与操作效率,是算法设计中重要的数据结构。原创 2020-06-12 23:33:31 · 687 阅读 · 0 评论 -
数据结构与算法-03 算法复杂度、排序、查找
摘要:数据结构与算法中的复杂度分析与排序算法 本文主要介绍了算法复杂度分析和常见排序算法。时间复杂度主要通过事前估算方法评估,分为常数阶O(1)、对数阶O(logn)、线性阶O(n)等不同级别,重点关注最坏时间复杂度。空间复杂度衡量算法临时占用存储空间大小。常见的排序算法包括冒泡排序等,通过比较相邻元素并交换实现排序,其时间复杂度通常为O(n²)。文章还提供了复杂度分析的具体方法和示例,强调算法优化的重要性。在实际应用中,多数情况下更关注时间复杂度,但某些场景(如大数据排序)也需要考虑空间复杂度。原创 2020-05-17 16:44:32 · 870 阅读 · 0 评论 -
数据结构与算法-02 栈、递归、哈希表
栈是一种先入后出(FILO)的数据结构,允许插入和删除的一端称为栈顶。文章介绍了栈的基本概念、应用场景(如子程序调用、递归处理、表达式转换等),并通过数组模拟栈的实现展示了入栈、出栈等核心操作。代码示例使用Java语言实现了一个数组栈,包含判空、判满、入栈、出栈、查看栈顶和遍历等功能。测试程序通过命令行交互方式演示了栈的基本操作流程,为理解栈的实际应用提供了清晰示例。原创 2020-05-13 08:01:56 · 644 阅读 · 2 评论 -
数据结构与算法-01 数组、链表
本文介绍了数据结构与算法的重要性及其经典应用案例。文章首先通过字符串匹配、汉诺塔、八皇后、马踏棋盘等经典算法问题,展示了KMP算法、分治算法、回溯算法和DFS等算法的实际应用。其次阐述了数据结构与算法的关系,强调算法是程序的灵魂,并通过五子棋存档、约瑟夫问题等示例说明数据结构在实际编程中的作用。最后详细讲解了稀疏数组的原理和实现,通过代码演示了二维数组与稀疏数组的相互转换过程。全文以实际问题为导向,展现了数据结构和算法在提高程序效率和解决复杂问题中的关键作用。原创 2020-05-06 11:09:20 · 1019 阅读 · 0 评论