自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(194)
  • 收藏
  • 关注

原创 仿 RabbitMQ 实现的简易消息队列

在实际的后端开发中,尤其是分布式系统⾥,跨主机之间使⽤⽣产者消费者模型,也是⾮常普遍的需求。因此,我们通常会把阻塞队列封装成⼀个独⽴的服务器程序,并且赋予其更丰富的功能。这样的服务程序我们就称为消息队列(MessageQueue,MQ)。RabbitMQ是⼀个⾮常知名、功能强⼤且⼴泛使⽤的消息队列。

2025-02-09 17:34:35 1303 1

原创 负载均衡式在线OJ

本文介绍了一个基于负载均衡的在线判题系统,项目采用C++ STL、Boost、cpp-httplib等技术栈,开发环境为CentOS 7云服务器和VSCode。系统核心是compiler_server模块,负责代码编译功能,通过多进程处理用户提交的代码:子进程使用g++编译代码并重定向错误输出,父进程检查编译结果。项目设计了临时文件管理、日志记录(包含等级、文件名、行号等信息)和文件存在性检查等功能,利用系统调用如stat、fork等实现编译流程。系统整体架构包含负载均衡、多线程处理等模块,为在线编程评测提

2024-12-23 14:51:29 1600

原创 笔试——Day48

本文包含三个算法题的解题思路与代码实现: 疯狂的自我检索者:通过模拟计算隐藏值的最小和最大可能总和,求其平均值。时间复杂度O(n-m)。 栈和排序:贪心算法解决栈排序问题,利用栈和哈希表确保每次弹出最大可能元素,时间复杂度O(n)。 加减:贪心策略寻找最大区间,通过排序和前缀和优化计算最小代价,满足代价不超过k。时间复杂度O(nlogn)。 三题均采用高效算法解决问题,涉及模拟、贪心和前缀和优化等技巧。

2025-08-24 16:06:53 667

原创 笔试——Day47

本文介绍了三个编程题的解法: 矩阵转置:通过坐标转换实现矩阵行列互换,使用双重循环完成转置操作。 四个选项:采用DFS枚举12个位置的4种可能选项,通过剪枝优化(检查选项剩余和相邻选项是否相同)提高效率。 接雨水问题:利用动态规划预处理左右最高柱子数组,计算每个位置能接的雨水量(左右最高柱子较小值减去当前高度)。三题均给出完整代码实现。

2025-08-23 15:26:28 408

原创 笔试——Day46

本文摘要了三道算法题的解题思路与代码实现。第一题采用了贪心算法,在怪物数量大于x时使用AOE攻击,否则使用单体攻击;第二题通过统计皇后攻击位置来判断是否存在相互攻击的情况;第三题使用动态规划,定义dp[i][j]表示区间内可获得的金币数。每道题都提供了清晰的思路和对应的C++代码实现,涵盖了贪心、统计方法和动态规划等常见算法技巧。

2025-08-22 23:49:36 807

原创 笔试——Day45

本文包含三道算法题的解题思路与代码实现。第一题使用双指针遍历数组,计算满足特定条件的最大连续子数组长度。第二题采用BFS算法求解单源最短路径问题,同时维护一个计数数组记录到达各位置的方法数。第三题通过动态规划解决股票买卖问题,定义两种状态分别表示持有和未持有股票,通过状态转移方程计算最大收益。三题均提供了完整的C++实现代码,展示了不同算法思想在解决实际问题中的应用。

2025-08-21 22:36:59 492

原创 笔试——Day44

本文介绍了三个算法题的解法:1. 最小差值:通过排序数组后遍历相邻元素求最小差值,注意使用long long防止溢出;2. kotori和素因子:使用DFS遍历每个数的素因子组合,寻找最小素因子和;3. dd爱科学1.0:采用贪心+二分法求最长非递减子序列,优化动态规划O(N²)的时间复杂度。代码实现均提供了详细注释,涵盖了排序、DFS、动态规划和二分查找等算法技巧。

2025-08-20 23:16:09 607

原创 笔试——Day43

本文包含三个算法题的解题思路与代码实现:1) kotori和抽卡(二)使用二项分布公式计算概率;2) ruby和薯条通过排序+二分查找或滑动窗口统计满足条件的数对;3) 循环汉诺塔采用模拟找规律的方法推导递推公式。各题均给出C++实现代码,涉及概率计算、二分查找、滑动窗口等算法技巧。

2025-08-19 22:13:09 363

原创 笔试——Day42

文章摘要:本文包含三个算法题的解析与实现。1)最大差值问题:通过遍历数组并维护当前最小值,计算最大差值;2)兑换零钱问题:使用动态规划求解最少纸币数量组合;3)小红子串问题:采用滑动窗口统计满足字符种类数量要求的子串数量。每个问题均附有解题思路和对应的C++代码实现。(149字)

2025-08-18 21:25:26 253

原创 笔试——Day41

本文摘要了三个算法题的解题思路与代码实现。第一题《棋子翻转》通过模拟矩阵四周值的变化实现状态翻转;第二题《宵暗的妖怪》采用动态规划求解最大饱食度,状态转移考虑间隔选取;第三题《过桥》使用贪心策略计算最少跳跃次数,实时更新可达范围。三题分别涉及模拟、动态规划和贪心算法,代码均采用C++实现,展示了不同算法思想的应用场景。

2025-08-17 16:01:05 263

原创 笔试——Day40

本文介绍了三个算法题的解题思路与代码实现。第一题"游游的字母串"通过枚举所有可能的字符变换情况,计算最小操作步数;第二题"体育课测验(二)"使用拓扑排序解决课程安排问题;第三题"合唱队形"通过正反两次最长上升子序列计算最少需要出列的人数。每个问题都给出了清晰的解决思路和对应的C++代码实现,涉及字符串处理、图论排序和动态规划等算法知识。

2025-08-16 15:59:05 250

原创 笔试——Day39

本文包含三个算法题的解题思路和代码实现:1. 统计字符串中出现次数最多的字母(哈希表);2. 计算字符串哈夫曼编码的最短长度(优先队列);3. 求组成整数的最少完全平方数个数(动态规划)。三题均采用高效算法,分别通过哈希统计、贪心策略和动态规划求解,代码简洁高效。

2025-08-15 23:44:42 294

原创 笔试——Day38

本文包含三个算法题的解题思路与代码实现: 天使果冻:通过预处理前i个位置的最大值和次大值数组,快速回答查询。使用动态维护的两个数组f和g分别记录最大值和次大值,时间复杂度O(n)。 dd爱旋转:处理矩阵旋转问题,通过统计旋转操作次数,利用行对称和列对称变换模拟180°旋转。优化操作次数取模,最终输出变换后的矩阵。 小红取数:采用动态规划中的01背包思路,状态dp[i][j]表示前i个数中和模k等于j的最大值。通过状态转移方程求解,最终输出满足条件的最大和或-1。 三题均基于模拟和动态规划思想,代码简洁高效。

2025-08-14 23:38:15 400

原创 笔试——Day37

本文介绍了三个算法题的解题思路与代码实现:1) 旋转字符串:通过模拟旋转操作,将字符串头部移至尾部后与目标字符串比较;2) 合并K个有序链表:采用分治策略,递归合并链表对;3) 滑雪问题:使用DFS+记忆化搜索,在矩阵中寻找最长递减路径。三种解法分别涉及字符串处理、链表操作和动态规划,展示了不同场景下的典型算法应用。

2025-08-13 20:12:37 316

原创 笔试——Day36

本文介绍了三个算法题的解题思路与实现代码: 提取不重复整数:通过哈希表统计数字出现次数,反向遍历字符串并输出首次出现的数字,实现去重效果。代码使用字符-'0'转换和数组作为哈希表。 哈夫曼编码:使用优先队列构建最小堆,每次取出两个最小元素计算合并代价,直至只剩一个元素,累计总合并成本。体现了贪心算法的思想。 abb子序列计数:采用动态规划方法,通过维护f[x]和g[x]两个辅助数组,分别记录以字符x结尾的"ab"子序列数量和字符x出现次数,最终累加所有可能的"abb"

2025-08-12 22:03:15 337

原创 笔试——Day35

这篇文章介绍了三个编程问题的解法:1) 奇数位丢弃问题,通过找规律发现每次删除的数字是2^n-1;2) 求和问题,使用DFS回溯法找出所有可能的数字组合;3) 字符串编辑距离问题,采用动态规划,通过状态转移方程计算最小编辑操作次数。每个问题都给出了清晰的思路解释和对应的代码实现。

2025-08-11 23:53:16 617

原创 笔试——Day34

本文介绍了三个算法题的解题思路与代码实现。第一题是ISBN号码验证,通过模拟计算校验位并分类讨论特殊情况(末位为X)。第二题使用BFS算法求解迷宫问题,计算从起点到所有终点的最短路径。第三题采用DFS搜索矩阵中的最长递增路径,并对比了使用备忘录优化前后的两种实现方式。三个题目分别考察了字符串处理、广度优先搜索和深度优先搜索的算法应用,其中第三题通过记忆化存储显著提升了搜索效率。

2025-08-10 16:05:41 340

原创 笔试——Day33

本文总结了三个算法题的解题思路与实现代码:1) 跳台阶扩展问题通过动态规划推导出f(n)=2^(n-1)的公式;2) 包含不超过两种字符的最长子串使用滑动窗口技术,维护字符种类数不超过2的窗口;3) 字符串排列采用DFS递归回溯法生成所有不重复排列。每个问题均提供了简洁的数学推导或高效的算法实现,代码清晰可读。

2025-08-09 23:38:07 426

原创 笔试——Day32

本文介绍了三个算法题解:1)素数回文问题,通过模拟构建数字并判断素数;2)活动安排问题,采用贪心算法对区间进行排序处理;3)合唱团问题,使用动态规划计算最大乘积,通过维护最大值和最小值矩阵,考虑前d个位置的状态转移。三题分别涉及模拟、贪心和动态规划算法思想。

2025-08-08 23:54:36 511

原创 笔试——Day31

本文总结了三个算法题的解题思路与代码实现:1)"小红的口罩"使用小堆结构,每次处理堆顶元素并翻倍计算;2)"春游"采用贪心策略,分情况讨论人员船只分配;3)"数位染色"运用动态规划,通过状态转移方程求解。每个问题都提供了核心思路和关键代码片段,展示了不同算法在解决实际问题中的应用。

2025-08-07 23:47:18 290

原创 笔试——Day30

本文摘要了三道算法题解:1. 爱吃素:通过判断a*b是否为质数来解题,需注意long long防溢出;2. 相差不超过k的最多数:采用排序+滑动窗口方法,调整左右边界使差值不超过k;3. 最长公共子序列:使用动态规划,通过状态转移方程求解两字符串的最长公共子序列。每道题均给出核心思路与代码实现。

2025-08-06 21:09:52 349

原创 笔试——Day29

本文介绍了三个算法题解:1. 排序子序列采用贪心策略,通过寻找最长连续上升或下降序列来分段;2. 消减整数问题利用贪心思想,优先减去最大可能的2*step值,要求h能被step整除;3. 最长上升子序列结合贪心和二分法,维护不同长度子序列的最小末尾元素,通过二分查找优化效率。三题均通过贪心策略优化求解过程,其中第三题还引入二分查找进一步提高效率。

2025-08-05 21:49:49 670

原创 笔试——Day28

本文介绍了三个编程题的解法:1. 游游的重组偶数问题通过找到第一个偶数位与末尾交换实现;2. 体操队形问题采用DFS回溯法枚举所有排列组合;3. 二叉树最大路径和问题通过DFS递归计算左右子树最大单链和并整合。三题均使用了模拟或DFS算法,代码实现简洁高效。

2025-08-04 23:09:45 201

原创 笔试——Day27

本文总结了三个算法题的解题思路与代码实现。第一题是排列组合问题,计算气球排列方式为n×(n-1)^(m-1)。第二题采用BFS算法解决迷宫最短路径问题,使用dist数组记录距离。第三题通过排序+小根堆优化主持人调度,当新活动开始时间≥堆顶结束时间时可复用主持人。三个问题分别考察了基础数学、广度优先搜索和贪心算法的应用。

2025-08-03 22:36:38 367

原创 笔试——Day26

摘要:本文包含三个编程题解:1) 小红ABC题,通过判断长度为2或3的最短回文子串解决;2) 不相邻的数题,使用动态规划(状态转移方程dp[i]=max(dp[i-1],dp[i-2]+a[i]))求最大和;3) 空调遥控题,通过维护窗口内极值差在2*p范围内求解。每题均提供核心思路和代码实现。

2025-08-02 21:28:45 314

原创 笔试——Day25

本文介绍了三道编程题的解法。第一题"笨小猴"统计字符出现次数,计算最大值与最小值之差并判断是否为质数,使用试除法检验质数。第二题"主持人调度"通过排序活动时间,检查相邻活动是否有时间重叠来判断能否由一个主持人完成。第三题"分割等和子集"转化为背包问题,使用动态规划判断能否选出若干数使其和等于数组总和的一半,通过状态转移方程实现。三题分别考察了模拟操作、排序比较和动态规划的应用。

2025-08-01 21:52:25 174

原创 笔试——Day24

本文介绍了三道算法题的解题思路和代码实现。第一题判断平衡二叉树,采用递归方法,通过dfs函数返回子树高度或-1标记非平衡树。第二题求最大子矩阵,使用二维前缀和优化计算,先初始化前缀和矩阵再枚举子矩阵求解。第三题小葱的01串问题,运用滑动窗口技术解决。每道题均提供了核心思路和关键代码片段,展示了不同算法技巧的应用。

2025-07-31 22:33:24 351

原创 笔试——Day23

本文总结了三个算法题的解题思路和代码实现。第一题【打怪】采用模拟方法,通过比较攻击力和怪物血量决定是否掉血;第二题【字符串分类】利用set去重特性,对字符串排序后统计不同类数;第三题【城市群数量】使用DFS遍历关联矩阵,通过visited数组标记已访问城市。三题分别考察了模拟、字符串处理和图的遍历等算法能力。

2025-07-30 21:54:08 214

原创 笔试——Day22

本文分享了三个编程题的解题思路与代码实现。第一题"添加字符"通过枚举字符串对应位置来解决问题;第二题"数组变换"采用贪心算法,以最大值为基准判断其他元素是否可变;第三题"装箱问题"使用动态规划,通过状态转移方程计算最大使用体积。每个问题都给出了核心思路和代码截图,涵盖了枚举、贪心和动态规划等算法思想。

2025-07-29 23:01:31 202

原创 HOT100——链表篇Leetcode206. 反转链表

摘要 Leetcode 206题要求实现链表反转。本文介绍了两种解法:头插法和三指针法。头插法通过创建新链表头,逐个将原链表节点插入到新链表头部实现反转;三指针法则利用当前节点(cur)、前驱节点(prev)和下一节点(nextNext)三个指针,通过改变节点指向完成反转。两种方法的时间复杂度均为O(n),空间复杂度O(1)。代码示例展示了具体实现细节,适用于面试准备和算法学习。

2025-07-28 23:30:40 369

原创 笔试——Day21

本文介绍了三个算法题的解题思路和代码实现:1)"爱丽丝的人偶"采用贪心策略的双指针法交替放置大小元素;2)"集合"问题利用set的去重和排序特性合并两个集合;3)"最长回文子序列"使用动态规划,通过状态转移方程和特定填表顺序求解。每个问题都给出了核心思路和关键代码片段,展示了不同算法在具体问题中的应用。

2025-07-28 22:06:44 1050

原创 笔试——Day20

本文介绍了三道编程题的解题思路和代码实现。第一题通过模拟对战回合数判断胜负;第二题使用动态规划求解连续子数组最大和;第三题分析字符串回文特性,针对不同情况处理非对称之美问题。每道题均给出了核心思路和关键解法,代码实现简洁高效,涵盖了模拟、动态规划和字符串处理等常见算法题型。

2025-07-27 11:44:57 1967

原创 笔试——Day19

本文介绍了三个编程题的解题思路和实现方法。第一题是小易的升级之路,通过模拟方式计算能力值提升,涉及最小公倍数的求解;第二题是礼物的最大价值,采用动态规划方法,通过状态转移方程计算最优解;第三题是对称之美,利用双指针和哈希表判断字符串是否能构成回文串。三题分别考察了模拟、动态规划和字符串处理能力,提供了清晰的算法思路与代码实现。

2025-07-26 11:33:11 399

原创 笔试——Day18

本文总结了三道算法题的解题思路与代码实现。第一题是字符串压缩问题,使用双指针模拟连续字符的压缩过程。第二题是贪心选择问题,通过排序后选取前k个最优解求和。第三题是经典的01背包问题,采用动态规划方法求解最大重量,通过状态转移方程实现最优解的选择。三道题目分别考察了模拟、排序和动态规划等算法思想。

2025-07-25 22:58:37 465

原创 笔试——Day17

本文摘要了三道算法题解:1. 小乐乐改数字:通过判断数字奇偶性修改为0或1,并用stoi函数去除前导0;2. 十字爆破:预处理行列总和,每个位置值为对应行和与列和减去自身值;3. 比那名居的桃子:使用滑动窗口维护长度为k的区间,动态计算happy和shy值,寻找最优解。三道题分别考察了模拟、预处理和滑动窗口算法思想。

2025-07-24 20:49:46 324

原创 笔试——Day16

本文介绍了三道编程题的解题思路和代码实现: 字符串替换:通过遍历字符串,遇到占位符时用给定参数替换,剩余参数追加到结果末尾。 神奇数:遍历区间内所有数字,检查其各位数字组合是否能构成质数来统计神奇数数量。 DNA序列(两种解法): 暴力枚举法:检查所有固定长度的子串,统计GC含量最高的子串 滑动窗口优化:通过动态维护窗口减少重复计算,提高效率 三道题均采用模拟方法,其中DNA序列问题展示了从暴力枚举到滑动窗口的优化过程。

2025-07-23 21:35:28 397

原创 笔试——Day15

本文总结了三个算法题的解题思路:1. 平方数问题通过比较开根号后相邻整数的平方差求解;2. 分组问题采用枚举法寻找首个满足条件的结果;3. 拓扑排序通过建图、入度队列和层序遍历实现。每个问题都配有核心代码片段,展示了从问题分析到代码实现的全过程。这些题目涵盖了数学计算、暴力枚举和图论等典型算法题型。

2025-07-22 22:02:25 340

原创 HOT100——图篇Leetcode207. 课程表

HOT100——图篇Leetcode207. 课程表

2025-07-21 22:58:39 306

原创 笔试——Day14

这篇文档总结了三个编程题目的解题思路与代码实现。第一题"乒乓球筐"使用哈希表统计字符出现次数,判断第二个字符串是否完全包含于第一个字符串中;第二题"组队竞赛"通过对数组排序后巧妙分组,计算中间值之和的最大值;第三题"删除相邻数字的最大分数"借鉴打家劫舍思想,统计数字出现次数后求不相邻数字的最大和。每个题目都提供了清晰的解题思路和对应的代码实现,展示了如何运用哈希表、排序和动态规划等算法解决实际问题。

2025-07-21 22:32:59 1039

原创 笔试——Day13

本文介绍了三个编程题的解法:1) 牛牛冲钻五:通过模拟游戏规则,根据胜负情况增减分数,连胜时额外加分;2) 最长无重复子数组:使用滑动窗口和哈希表统计元素频率,动态调整窗口边界求最长无重复子数组;3) 重排字符串:采用贪心算法,优先间隔放置高频字符,确保相邻字符不重复。每个题目均附有核心思路和代码实现。

2025-07-20 22:05:40 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除