自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Dilworth定理证明

本文摘要:文章系统介绍了偏序集的基本概念,包括链、反链、链覆盖、反链覆盖等,并重点证明了Dilworth定理和Mirsky定理。Dilworth定理表明最长反链长度等于最小链覆盖数,通过归纳法分两种情况证明;Mirsky定理作为对偶形式,证明最长链长度等于最小反链覆盖数。两个定理揭示了偏序集中链与反链的深刻对偶关系,为组合数学中偏序结构研究提供了重要工具。

2025-08-07 11:43:05 225

原创 离散数学--等价类、偏序集

本文摘要: 等价关系与划分:定义了集合上的等价关系(自反、对称、传递性),等价类的概念,并证明等价类构成集合的划分。等价关系的三个等价条件(aRb、[a]=[b]、[a]∩[b]≠∅)相互推导成立。 偏序集与格:介绍偏序关系(自反、反对称、传递)及其相关概念(全序、良序、覆盖关系)。通过哈斯图表示偏序集,讨论极大/极小元、上下界及格的判定条件(任意元素对存在最小上界和最大下界)。 拓扑排序:阐述如何从偏序关系构造兼容的全序关系,利用有限偏序集必有极小元的引理,简述拓扑排序的算法思想。

2025-08-06 15:30:47 537

原创 离散数学--二元关系及其性质、闭包

本文系统介绍了二元关系的基本概念、性质、表示方法及闭包运算。主要内容包括:1)二元关系的定义与集合表示;2)关系的6种基本性质(自反性、对称性、传递性等)及其判定方法;3)关系的矩阵表示和有向图表示;4)关系的自反闭包、对称闭包和传递闭包的概念与构造方法,重点证明了传递闭包等于连通关系,并给出了有限集上传递闭包的计算原理。文章通过严谨的数学定义和证明,结合实例说明了关系理论在离散数学中的核心地位和应用价值。

2025-08-05 17:19:13 947

原创 leetcode_11 盛最多水的容器

摘要:本文探讨了LeetCode中“盛最多水的容器”问题,给出了三种解法。暴力法枚举所有左右端点,时间复杂度O(n²)。单调数组法优化左端点枚举,但仍是O(n²)。最优解法采用双指针+贪心策略,从两端向中间移动较小高度的指针,时间复杂度O(n)。通过数学证明该策略的正确性,确保能找到最大面积。三种方法代码实现简洁,双指针法效率最高。

2025-08-04 20:12:25 1006

原创 C++ sort比较规则需要满足严格弱序

C++排序中的严格弱序规则:自定义比较函数时,必须满足非自反性(a<a为假)、传递性(a<b且b<c则a<c)和不可比传递性等严格弱序条件。常见的错误是在比较函数中未正确处理相等情况,导致违反非自反性。例如当两个默认值(fi=-1)比较时都返回true,就会引发未定义行为。解决方法是通过确保对等值情况返回false来满足严格弱序要求。

2025-08-01 11:33:03 720

原创 leetcode_560 和为K的子数组

本文探讨了和为k的子数组个数问题。提供了两种解法:1)暴力枚举法,通过固定子串起点并累加计算和,时间复杂度较高但能通过测试;2)前缀和优化法,将问题转化为类似两数之和的问题,利用哈希表存储前缀和出现次数,将时间复杂度优化至O(n)。特别强调了需要正确处理前缀和初始值pre[0]。前缀和解法通过在遍历时维护当前累加和,并查询哈希表中满足cur-k的前缀和出现次数,有效提升了算法效率。

2025-07-27 10:06:03 131

原创 leetcode_122 买卖股票的最佳时机II

本文讨论了股票买卖问题,要求通过多次买入和卖出股票获得最大利润。提供了三种解法:暴力递归、动态规划和贪心算法。暴力递归通过深度优先搜索枚举所有可能操作,但效率较低。动态规划通过状态转移方程(持有/不持有股票的最大收益)优化了时间复杂度至O(n)。最简洁的贪心算法则利用连续上升区间性质,将问题转化为相邻天数的正差价累加,时间复杂度同样为O(n)但代码更简洁。三种方法从不同角度解决了该问题,其中贪心算法最优美高效。

2025-07-25 18:07:53 971

原创 算法分析--主定理及其证明

本文介绍了递归算法分析中的主定理及其证明过程。

2025-07-24 16:16:09 322

原创 算法分析--时间复杂度

本文介绍了算法复杂度记号和问题分类。复杂度分析使用大O、Ω、Θ表示上下界和确界,小o、ω表示严格关系。P问题可在多项式时间解决;NP问题可在多项式时间验证;NPC问题是NP中最难且可互相归约的问题;NP-hard问题比NPC更广,但不一定属于NP。内容参考了矩阵客和时间复杂度相关文章。

2025-07-20 17:45:53 546

原创 leetcode_121 买卖股票的最佳时期

本文探讨了股票买卖问题的最优解法,要求在给定股价序列中通过一次买入卖出操作获得最大利润。介绍了四种解法:1)暴力枚举法(O(n²));2)贪心算法,通过维护历史最低价优化到O(n);3)动态规划法,状态转移方程与贪心类似;4)差分转换法,将问题转化为最大子数组和问题。其中贪心算法是最优解法,时间复杂度O(n),空间复杂度O(1)。后两种方法虽理论可行,但实际执行效率与贪心算法相当。

2025-07-19 21:04:31 855

原创 leetcode_53 最大子数组和

本文探讨了求解最大子数组和的四种方法:暴力枚举(O(n²))、动态规划(O(n))、贪心算法和分治策略。动态规划通过状态转移方程优化空间至O(1);贪心算法采用"抛弃负收益"策略;分治法则将问题分解为左右子区间处理,需维护区间和、左右端点极值等参数,时间复杂度为O(nlogn)。其中动态规划和贪心解法最为高效,空间复杂度均为O(1),体现了不同算法思想在解决同一问题时的多样性与优化思路。

2025-07-19 18:13:29 827

原创 华为OD 特异双端队列

摘要:题目描述了一种只能在头部弹出、但可以从两端插入的双端队列操作问题。要求通过最少次数的排序调整,使按1到n的顺序依次弹出元素。初始解法直接排序队列,优化后利用插入的有序性,通过维护队列的最小期望值和当前最大插入值来判断是否需要排序。最终解法进一步简化,仅用三个变量(期望值、最大插入值、是否有序)来跟踪队列状态,无需实际维护队列内容,显著优化了空间复杂度。

2025-07-15 17:21:46 431

原创 leetcode_20 有效的括号

本文介绍了判断括号序列有效性的算法。关键在于利用栈结构匹配括号对,并通过哈希表优化判断逻辑。文章提出两种解法:栈存储左括号本身或对应的右括号,处理时先检查字符串长度是否为偶数,再遍历匹配括号。两种方法均需确保栈最终为空,否则序列无效。参考来源提供了详细思路。

2025-07-15 08:51:16 315

原创 华为OD 消消乐游戏

摘要:本文讨论了一个字符串消除游戏的算法实现。游戏规则是相邻相同字母可消除,直到无法消除为止。文章比较了两种解法:栈的应用和双指针法。栈解法通过比较栈顶元素与当前元素实现高效消除,而双指针法需处理重复消除问题。样例分析表明栈解法更简洁高效,最终只需输出剩余字符串长度。

2025-07-14 17:39:12 708

原创 华为OD 处理器

本文实现了一个处理器亲和性调度算法,根据任务需求数量和可用处理器编号输出符合优先级的处理器组合。 算法首先将处理器分为两组(0-3和4-7),然后根据任务申请数量num(1/2/4/8)确定优先级规则: num=1时优先级顺序:剩余4个>2个>3个>1个 num=2时优先级顺序:剩余2个>4个>3个 num=4时必须剩余4个 num=8时需要全部8个处理器可用 使用回溯法生成满足条件的处理器组合,对两组处理器分别计算优先级,输出优先级高的组合。若优先级相同,则输出两组中的所有可

2025-07-13 23:36:48 551

原创 CS144 lab2 tcp_receiver

本文摘要: 实验实现了TCP接收端功能,重点解决32位序列号与64位绝对序列号的转换问题。实验包含两部分:接收并重组数据流(Reassembler),以及发送确认号和窗口大小(ackno和window size)。主要挑战在于处理32位序列号空间的回绕(wrap around)问题,以及SYN/FIN标志对序列号的影响。通过建立绝对序列号、流索引和TCP序列号之间的转换关系,解决了索引空间差异问题。实验还处理了TCP连接建立和终止时的序列号管理,以及窗口大小限制等细节。最终实现了能够正确处理数据重组和反馈确

2025-07-11 16:31:52 835

原创 leetcode 226 翻转二叉树

题目要求翻转一棵二叉树并返回根节点。通过递归方法实现:先翻转二叉树的左右子树,再将左右子树交换位置。对于空节点直接返回,否则递归处理左右子树后交换它们的引用。该解法简洁高效,时间复杂度为O(n),空间复杂度为O(h),其中n是节点数,h是树的高度。

2025-07-10 10:17:44 223

原创 leetcode_27 移除元素

本文介绍了两种双指针解法来移除数组中指定值val的元素。第一种同向双指针法使用快慢指针,将非val元素前移,时间复杂度O(n)。第二种相向双指针法通过左右指针交换元素,避免了重复赋值问题。两种方法都不需要额外空间,原地修改数组并返回新长度。代码示例展示了两种解法的具体实现,适用于需要在原数组上高效处理元素移除的场景。

2025-07-10 10:00:42 297

原创 华为OD 数字游戏

题目要求判断是否存在连续子数组的和能整除给定整数m。两种主要解法:动态规划和前缀和结合哈希表。动态规划解法时间复杂度为O(nm),空间复杂度可优化至O(m)。前缀和结合哈希表利用同余性质将问题转化为寻找相同模值,时间复杂度降至O(n),空间复杂度为O(m)。最优解法采用前缀和与哈希表,效率更高,适用于大规模数据。

2025-07-08 16:41:34 772

原创 C++17: string_view

c++17: string_view

2025-07-08 10:42:53 225

原创 C++17:std::optional

C++17: std::optional

2025-07-08 10:08:51 119

原创 华为OD 二叉树的中序遍历

华为OD 二叉树的中序遍历

2025-07-08 09:27:16 265

原创 华为OD 二维伞的雨滴效应

华为OD 二维伞的雨滴效应

2025-07-07 23:52:18 616

原创 CS144 lab1 重排器

CS144 lab1 重排器

2025-07-05 15:40:36 753

原创 华为OD 经典屏保

华为OD 经典屏保

2025-07-02 18:54:48 860

原创 dpdk入门:基础概念

dpdk基础概念

2025-06-25 10:43:40 369

原创 华为OD 最小循环子数组

本文提出了一种利用KMP算法中的next数组性质来检测数组是否由子数组循环拼接而成的解法。通过计算数组的最长公共前后缀,如果满足next[n] % (n - next[n]) = 0的条件,则说明数组可以表示为某个子数组的多次重复。算法时间复杂度为O(n),空间复杂度为O(n),能够高效地找到最小重复子数组。代码实现展示了如何计算next数组并验证循环条件,最终输出最小重复子数组。该方法简洁高效,适用于类似问题的求解。

2025-06-18 17:19:20 703

原创 leetcode_213 打家劫舍 II

本文解决了环形房屋的打家劫舍问题(首尾不相邻)。通过分析环形序列的对称性,发现最优解序列在不同起点具有等价性。因此将问题转化为两个线性序列:去掉首元素和去掉尾元素,分别用打家劫舍I的方法求解。最终结果为这两个子问题的最大值。实现时用动态规划分别计算两个子序列的最大收益,时间复杂度O(n),空间复杂度O(n)。这种方法巧妙地将环形问题分解为两个线性问题,保证了正确性和高效性。

2025-06-18 16:29:50 800

原创 leetcode_198 打家劫舍

leetcode_198 打家劫舍

2025-06-18 10:58:52 212

原创 leetcode_3584子序列首尾元素乘积最大值

leetcod_3584 子序列首尾元素乘积最大值

2025-06-17 17:20:12 160

原创 leetcode_3583 统计特殊三元组

文章摘要: 本文探讨了在给定数组中统计满足特定条件的三元组$(i,j,k)$的方法,要求$i<j<k$且$2a[j]=a[i]=a[k]$。提出了三种解法: 枚举中间元素:通过维护前缀和后缀哈希表,计算每个中间元素对应的有效三元组数量。 枚举右边元素:动态维护两个哈希表,分别记录单元素和二元组出现次数,遍历时直接统计符合条件的三元组。 二分查找:预处理元素位置,利用二分法快速确定左右边界,计算有效组合数。 代码实现均以C++为例,时间复杂度优化至$O(n)$或$O(n\log n)$,适用于大规

2025-06-17 16:52:51 342

原创 leetcode_455 分饼干

摘要:该题目要求将饼干分配给小朋友,确保每个小朋友只能获得不小于其胃口值的饼干。解题采用排序+贪心策略,先对饼干和胃口排序,然后用小饼干优先满足胃口小的小朋友。若无法满足则跳过,最终统计能满足的小朋友数量。时间复杂度为排序的O(n log n)。

2025-06-17 16:39:29 171

原创 CS144 lab0: warmup

本文是Lab 0的网络编程实验报告,主要包含三部分内容:环境配置、网络命令实践和字节流实现。首先详细记录了Ubuntu环境下的开发工具安装和g++-13配置过程,包括源设置和版本切换。其次展示了使用telnet和netcat进行HTTP通信和本地网络测试的实践步骤。最后实现了一个内存中的可靠字节流类(ByteStream),支持有限容量的数据读写、EOF处理和缓冲区管理,代码中包含了详细的注释说明其关键功能实现。整个实验涵盖从基础网络配置到实际编程实现的完整流程。

2025-06-14 23:47:23 452

原创 leetcode_503 下一个更大元素

leetcode_503 下一个更大元素

2025-06-14 20:35:05 593

原创 leetcode_128 最长连续序列

leecode_128 最长连续序列

2025-06-14 15:08:31 244

原创 leetcode_49 字母异位分组

leetcode_49 字母异位分组

2025-06-14 12:14:34 261

原创 leetcode_56 合并区间

leetcode56_合并区间

2025-06-08 20:48:16 916

原创 C++vector增加元素后迭代器失效问题

c++vector增加元素后迭代器失效问题

2025-06-08 09:23:03 182

原创 leetcode_206 反转链表

leetcode_206 反转链表

2025-06-06 19:39:37 303

原创 leetcode179_最大数

leetcode179_最大数

2025-06-01 18:48:17 1139

空空如也

模板实现bitset

2023-04-27

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

TA关注的人

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