- 博客(11)
- 收藏
- 关注
原创 DFS入门(从小白一步一步优化) Leetcode 200->695->3619->16.19->130->463->2658->733->1034->1020
本文以 LeetCode 网格类 DFS / Flood Fill / 连通分量问题 为主线,系统梳理了从「岛屿数量」这一入门题开始,到多方向连通、边界处理、区域染色、飞地统计等一系列经典题目的统一解题范式。文章并非只给最终代码,而是完整展示了:从 最原始 DFS 写法 到 边界判断内聚化从 重复代码 到 方向数组抽象从 修改 grid 标记 到 visited 数组的引入从 一次 DFS 一个目标 到 一次 DFS 解决全局问题网格 DFS 的通用模板四方向 / 八方向连通的处理方式
2025-12-14 00:39:38
1761
原创 双指针(一步一步)(零->进阶->高难度 ||LeetCode 922->287->42->881->11->475)
LeetCode 922 - 按奇偶排序数组 II该问题要求将数组中奇数放在奇数索引位置,偶数放在偶数索引位置。解决方法有暴力法(将奇数和偶数分别放入两个数组,再按位置填回原数组),也可以使用双指针方法,通过遍历并交换元素来调整位置,达到 O(N) 的时间复杂度。LeetCode 287 - 寻找重复数该问题要求在一个包含重复数字的数组中找到重复数字,且使用 O(1) 空间。可以通过二分法查找重复数字的范围,或者使用快慢指针方法将问题转化为“链表环问题”,利用 Floyd 判圈算法来高效找到重复数字
2025-12-15 20:33:39
953
原创 (从零开始讲,一步一步)大根堆->下沉上浮->堆排序->优化代码
堆排序是一种基于堆数据结构的排序算法,常用于实现优先队列。堆是一种完全二叉树,具有大根堆和小根堆两种形式。在大根堆中,父节点的值总是大于或等于其子节点的值。堆插入(heapInsert):将一个新元素插入堆中,并通过**上浮(siftUp)**操作调整堆,使堆的性质得以保持。插入操作通过不断与父节点比较并交换,直到找到正确的位置。堆化(heapify):当某个元素被替换后,可能破坏了堆的结构,需要通过**下沉(siftDown)**操作恢复堆的性质
2025-12-15 10:21:19
546
原创 二分答案入门(有几道难题)(由浅入深 一步一步讲)LeetCode 073->410->牛客机器人跳跃->719
总结了“二分答案”这一重要算法思想,并通过四道经典题目由浅入深进行讲解:LeetCode 073(爱吃香蕉的狒狒)、LeetCode 410(分割数组的最大值)、牛客机器人跳跃问题以及 LeetCode 719(第 K 小的数对距离)。核心思想在于:当问题的答案具有范围,并且满足“答案越大(或越小),条件越容易(或越难)成立”的单调性时,就可以对“答案本身”进行二分搜索。文章详细分析了如何确定左右边界、如何设计判定函数(fun/check),以及如何根据判定结果收缩区间,最终得到最小或最大满足条件的答案
2025-12-14 15:56:19
679
原创 Leetcode1170. 比较字符串最小字母出现频次
题目Leetcode 1170要求比较字符串数组中各字符串的最小字母出现频次。定义函数f(s)统计字符串s中字典序最小字母的出现次数。给定查询数组queries和词汇表words,需统计words中满足f(queries[i])<f(W)的单词数目。 基础解法:对每个words计算f值并排序,通过二分查找统计满足条件的单词数。时间复杂度为O(nlogn)。 优化解法:利用f值不超过10的特性,使用计数数组记录各f值的出现次数,并通过后缀和快速查询大于目标值的数目。时间复杂度优化为O(n)。两种方法均能
2025-12-13 11:14:34
282
原创 我的第一个优快云 - First (小白 求指点)
请解决: 给定一个正整数N(0=<N<=1e18) 需要判定f(N)是否被3整除。递推公式: f(n)=f(n-1)+f(n-2);暴力解法不能通过 因为N<=1e18 必超时。如果整除 输出:yes 否则 输出:no。##思路二:递推模板优化(但是仍然超时)先算出f(N) 再判断 f(N)%3。标准的ACM输入格式。
2025-12-10 15:12:15
792
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅