- 博客(130)
- 资源 (5)
- 收藏
- 关注

原创 ⭐算法OJ⭐经典题目分类索引(持续更新)
在编程竞赛和算法学习中,Online Judge(OJ)平台是程序员们磨练技能的重要工具。OJ平台上的题目种类繁多,涵盖了从基础数据结构到复杂算法的各个方面。为了更好地理解和掌握这些题目,对其进行分类是非常有必要的。这篇索引文章会持续更新,欢迎大家点赞收藏!
2025-03-11 08:00:23
1554
原创 ⭐算法OJ⭐两数之和【哈希表】(C++ 实现)Two Sum
是的,“两数之和”(Two Sum)是一道非常经典的算法题目,几乎是算法入门和面试准备的必做题之一。这道题目是许多初学者接触哈希表(Hash Table)或字典(Dictionary)的第一个应用场景。它帮助初学者理解如何通过空间换时间,将时间复杂度从暴力解法的 O(n²) 优化到 O(n)。
2025-03-16 12:10:35
699
原创 图论入门【数据结构基础】:什么是图?如何表示图?
图(Graph)是一种非线性数据结构,用于表示对象之间的关系。图由 **顶点(Vertex)** 和 **边(Edge)** 组成,其中顶点表示对象,边表示对象之间的关系。图广泛应用于计算机科学、数学、物理、生物、社交网络等领域。
2025-03-14 22:44:42
1155
原创 ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Total Hamming Distance
Hamming Distance(汉明距离)是用于衡量两个等长字符串在相同位置上不同字符的个数的度量。它通常用于比较两个二进制字符串或编码序列的差异。
2025-03-14 11:07:59
848
原创 ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance
Hamming Distance(汉明距离)是用于衡量两个等长字符串在相同位置上不同字符的个数的度量。它通常用于比较两个二进制字符串或编码序列的差异。
2025-03-13 23:43:03
959
原创 为什么程序员需要学习数字电路
在编程的世界里,我们通常关注的是算法、数据结构、框架和设计模式等软件层面的知识。然而,数字电路作为计算机硬件的核心基础,对程序员来说同样重要。它不仅帮助我们理解计算机的底层原理,还能在实际开发中优化性能、解决硬件相关问题。无论是嵌入式开发、硬件加速,还是跨学科合作,数字电路知识都能为我们提供强大的支持。如果你是一名程序员,不妨花点时间学习数字电路,它将为你打开一扇通往硬件世界的大门,让你的技术能力更上一层楼!
2025-03-13 10:35:43
528
原创 CAP 公理解析:分布式系统中的一致性、可用性与分区容错性
CAP 公理是分布式系统设计中的一个核心理论,由计算机科学家 Eric Brewer 在 2000 年提出。它指出,在分布式系统中,一致性(Consistency)、可用性(Availability) 和 分区容错性(Partition Tolerance)三者不可兼得,最多只能同时满足其中两个。
2025-03-13 08:00:00
1023
原创 ⭐算法OJ⭐因数游戏【动态规划】Divisor Game
Alice 和 Bob 在玩一个游戏,Alice 先手。初始时,黑板上有一个数字 n。每轮玩家需要执行以下操作:选择一个满足 0 < x < n 且 n % x == 0 的数字 x。将黑板上的数字 n 替换为 n - x。如果玩家无法执行操作(即没有满足条件的 x),则该玩家输掉游戏。假设 Alice 和 Bob 都采取最优策略,判断 Alice 是否能赢得游戏。如果 Alice 能赢,返回 true;否则返回 false。
2025-03-13 00:39:36
751
原创 ⭐算法OJ⭐判断链表是否有环【快慢指针】(C++实现)Linked List Cycle II
通过快慢指针法,我们可以高效地判断链表是否有环,并找到环的起始节点。这种方法不仅代码简洁,而且性能优秀,适合处理大规模数据。掌握快慢指针的思想对于解决类似的链表问题非常有帮助。
2025-03-12 09:15:00
478
原创 ⭐算法OJ⭐判断链表是否有环【快慢指针】(C++实现)Linked List Cycle
通过快慢指针法,我们可以高效地判断链表是否有环。这种方法不仅代码简洁,而且性能优秀,适合处理大规模数据。掌握快慢指针的思想对于解决类似的链表问题非常有帮助。
2025-03-12 09:00:00
829
原创 一致性哈希(Consistent Hashing):分布式架构的核心组件
一致性哈希(Consistent Hashing)是一种特殊的哈希技术,主要用于分布式系统中数据的分布和负载均衡。它解决了传统哈希方法在节点增减时导致的全局数据重新映射问题,从而提高了系统的可扩展性和稳定性。
2025-03-12 04:50:06
968
原创 ⭐算法OJ⭐链表排序【归并排序】(C++/JavaScript 实现)
通过归并排序,我们可以高效地对链表进行排序。这种方法不仅时间复杂度低,而且空间复杂度也较为优秀,适合处理大规模数据。掌握链表的分割和合并技巧对于解决类似的链表问题非常有帮助。
2025-03-11 22:57:33
666
原创 ⭐算法OJ⭐找到链表的中间节点【快慢指针】(C++实现)Middle of the Linked List
通过快慢指针法,我们可以高效地找到链表的中间节点。这种方法不仅代码简洁,而且性能优秀,适合处理大规模数据。掌握快慢指针的思想对于解决类似的链表问题非常有帮助。
2025-03-11 22:55:48
815
原创 ⭐算法OJ⭐荷兰国旗问题【三指针法】(C++实现)
荷兰国旗问题的核心是如何高效地将一个包含三种元素的数组进行分区排序。这个问题在排序算法设计中具有重要意义,尤其是对于需要处理大量重复元素的排序算法(如快速排序的变种)。
2025-03-11 08:31:56
350
原创 ⭐算法OJ⭐N-皇后问题 II【回溯剪枝】(C++实现)N-Queens II
通过回溯算法解决了 N-皇后问题,能够找到所有可能的解的个数。代码中使用了递归和剪枝技术,确保高效地搜索所有可能的棋盘配置。
2025-03-07 01:01:14
602
原创 ⭐算法OJ⭐N-皇后问题【回溯剪枝】(C++实现)N-Queens
通过回溯算法解决了 N-皇后问题,能够找到所有可能的解。代码中使用了递归和剪枝技术,确保高效地搜索所有可能的棋盘配置。
2025-03-07 00:31:49
1153
原创 题目 3218 ⭐零食采购⭐【数理基础】蓝桥杯2024年第十五届省赛
小蓝的星际零食采购问题,利用树的性质和 LCA 快速确定路径,结合集合统计不同零食种类。适用于树结构中的路径查询问题,尤其是需要统计路径上不同属性的场景。
2025-03-06 11:59:49
759
原创 ⭐算法OJ⭐最佳买卖股票时机(含“冷却期”或“交易费”)【动态规划 + 滚动窗口】(C++实现)Best Time to Buy and Sell Stock 系列
这一篇给大家分享两篇股票买卖系列的扩展题目,难度不太大,如果对这类问题不是很熟悉可以参考[⭐算法OJ⭐最佳买卖股票时机【贪心算法 + 动态规划】(C++实现)Best Time to Buy and Sell Stock 系列 I,II,III,IV]。我们分别提供了两种解法,一种是常规的动态规划,另一种是利用滚动窗口实现的O(1)空间复杂度的优化。
2025-03-06 00:40:51
1143
原创 ⭐算法OJ⭐跳跃游戏【动态规划】(C++实现)Jump Game 系列 V
跳跃游戏V是一个典型的动态规划问题。我们需要找到从任意索引开始跳跃,最多可以访问的索引数量。
2025-03-05 12:14:29
755
原创 ⭐算法OJ⭐跳跃游戏【动态规划 + 单调队列】(C++实现)Jump Game 系列 VI
这是一个典型的动态规划问题。我们需要找到从索引 0 到索引 n - 1 的最大得分路径。对于每个索引 i,我们需要检查从 [i - k, i - 1] 范围内的所有可能的前一个位置 j,并选择使得 dp[j] + nums[i] 最大的值。可以使用单调队列(Monotonic Queue)优化,将时间复杂度降低到 O(n)。
2025-03-05 11:55:38
824
原创 题目 3217 ⭐成绩统计⭐【滑动窗口 + 二分搜索】蓝桥杯2024年第十五届省赛
通过排序和滑动窗口,可以高效地检查是否存在满足条件的子集。二分搜索用于快速找到最小的 x。
2025-03-05 08:23:57
748
原创 题目 3216 ⭐团建⭐【DFS】蓝桥杯2024年第十五届省赛
通过 DFS 遍历生成路径,结合 LCP 计算,可以高效地解决这个问题。代码实现清晰,逻辑简单,适用于树结构的问题。该方法的复杂度在合理范围内,能够处理中等规模的输入。
2025-03-04 23:58:52
1018
原创 题目 3215 ⭐训练士兵⭐【组合优化】蓝桥杯2024年第十五届省赛
通过动态规划,我们可以高效地解决训练士兵问题。关键在于遍历所有可能的组团训练次数 k,并计算对应的总成本。这种方法不仅适用于本题,还可以推广到类似的组合优化问题中。
2025-03-04 12:33:25
813
原创 ⭐算法OJ⭐跳跃游戏【BFS+滑动窗口】(C++实现)Jump Game 系列 III,VII
这篇文章介绍 **跳跃游戏** 的第三题和第七题,两道题目有异曲同工之妙,都运用了BFS广度优先搜索算法实现,难度相比于前两题较高,而且不同于更常见的在二维矩阵或者图中的BFS,一维的BFS更加抽象,同时也更能揭示算法的本质。我们一起来看看吧!
2025-03-04 12:13:27
1048
原创 为什么我选择 C++ 刷题,而不是 Python?
在算法竞赛和编程面试中,选择合适的编程语言至关重要。Python 以其简洁的语法和强大的库支持,成为了许多初学者的首选。然而,作为一名长期使用 C++ 刷题的开发者,我想从多个角度探讨为什么 C++ 可能是更好的选择,尤其是在算法竞赛和面试准备中。
2025-03-04 01:02:41
559
原创 ⭐算法OJ⭐跳跃游戏【贪心算法】(C++实现)Jump Game 系列 I,II
既股票买卖系列之后的第二组贪心算法题目:跳跃游戏系列。这一篇介绍的两个问题,其输入均为一个数组,每个元素表示在该位置可以跳跃的最大长度。这类问题的关键在于维护当前跳跃范围和最远可到达位置,并在遍历过程中动态更新。
2025-03-04 00:45:56
1247
原创 ⭐算法OJ⭐最佳买卖股票时机【贪心算法 + 动态规划】(C++实现)Best Time to Buy and Sell Stock 系列 I,II,III,IV
“股票买卖最佳时机”系列OJ题目集锦(四道),核心思想是贪心算法和动态规划。乍一看很难,但其实相对容易理解,在面试中考察的频率也更高。
2025-03-03 09:39:14
1629
原创 贪心人生,贪心算法
人生,如同一场漫长的旅程,每一步都充满了选择与取舍。我们常常在每一个岔路口,试图做出最明智的决定,希望这些决定能够引领我们走向理想中的终点。这如同贪心算法,在每一步都选择当前最优解。它简单、直接,却也充满了智慧与哲理。
2025-03-03 08:34:43
860
原创 ⭐算法OJ⭐正则表达式匹配【动态规划 DP】(C++实现)
这篇是动态规划系列中难度较高的一道题目。正则表达式匹配是一个经典的算法问题,通常用于判断一个字符串是否与给定的模式匹配。模式中可能包含普通字符和特殊字符(如 . 和 *)。以下是正则表达式匹配问题描述和解决方案,包括问题分析、动态规划思路和代码实现。
2025-03-03 07:21:47
453
原创 ⭐算法OJ⭐编辑距离的实现及其应用【动态规划 DP】(C++实现)
编辑距离(Edit Distance)是衡量两个字符串相似度的一种方法。它表示将一个字符串转换为另一个字符串所需的最少操作次数,允许的操作包括插入、删除和替换字符。本文给出基于动态规划思想的C++实现,并介绍其在拼写检查、生物信息学、自然语言处理、数据清洗、版本控制、推荐系统、语音识别、OCR 和密码学等领域的应用。
2025-03-03 06:58:47
554
原创 三次握手与四次挥手:TCP连接的生命周期
在网络通信中,TCP(传输控制协议)是一种面向连接的、可靠的传输协议。为了确保数据的可靠传输,TCP在建立连接和断开连接时,分别使用了“三次握手”和“四次挥手”的机制。本文将详细介绍这两个过程的工作原理及其重要性。
2025-03-02 08:45:59
692
原创 密码学原理【学习笔记】选择密文攻击及变种
选择密文攻击是一种强大的密码分析模型,攻击者通过选择特定的密文并获取解密结果,试图破解加密系统或获取密钥信息。根据攻击者的能力,选择密文攻击可以分为非自适应(CCA1)和自适应(CCA2)两种类型。为了防御这种攻击,现代密码系统采用了安全的填充方案、抗CCA2的加密设计以及消息认证码等技术。理解选择密文攻击的原理和防御方法,对于设计和评估密码系统的安全性至关重要。
2025-03-02 08:02:13
635
原创 ⭐算法OJ⭐字符串与数组【动态规划 DP】(C++实现)最长公共子序列 LCS + 最短公共超序列 SCS
动态规划(Dynamic Programming, DP)在字符串数组相关的算法题中应用广泛,尤其是在解决子序列、子串、编辑距离、匹配等问题时。动态规划的核心思想是将问题分解为子问题,并通过存储子问题的解来避免重复计算,从而提高效率。分析两道经典题目:最长公共子序列 LCS + 最短公共超序列 SCS,举一反三,融会贯通。
2025-03-01 06:30:04
1054
原创 ⭐算法OJ⭐矩阵的相关操作【深度优先搜索 DFS + 回溯】(C++ 实现)Unique Paths 系列
算法OJ矩阵的相关操作之DFS,以C++实现,属于Unique Paths 系列题目。
2025-03-01 03:04:22
1109
原创 ⭐算法OJ⭐矩阵的相关操作【动态规划 + 组合数学】(C++ 实现)Unique Paths 系列
算法OJ矩阵的相关操作之动态规划,以C++实现,总结Unique Paths系列题目,含动态规划解法和组合数学解法,文末附一种二维数组简化为一维数组的方案。
2025-02-28 11:45:00
1131
Introduction to Modern Cryptography 2nd
2017-10-25
DH-Algorithmics-the Spirit of Computing 算法精髓 英文第三版 带书签电子书
2017-10-10
iOS Apprentice Fifth Edition Beginning iOS development with Swift 3 v5.0
2017-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人