- 博客(112)
- 收藏
- 关注
原创 定长滑动窗口
本文系统介绍了滑动窗口算法的核心思想与应用。该算法通过左右指针动态维护一个窗口,在数组/字符串问题中高效寻找满足条件的子序列。文章通过LeetCode典型例题(209、3、1456、643题)详细解析了滑动窗口的实现技巧:1)使用累积和优化计算;2)利用哈希表检测重复;3)定长窗口的移动策略;4)处理负数情况的初始化注意事项。重点强调了调试的重要性,并对比了暴力解法与优化解法的效率差异(O(n²) vs O(n))。文中代码示例展示了如何通过维护窗口和、计数器等技巧提升性能,为处理同类问题提供了可复用的模板
2025-07-27 15:18:52
956
原创 滑动窗口-7
这篇题解讨论了LeetCode 1652题"拆炸弹"的两种解法。第一种是作者的自研方案,分别处理k>0和k<0的情况:对于k>0,使用滑动窗口计算每个位置的累加和;对于k<0,逆向遍历数组计算。第二种是更简洁的环形数组解法,通过取模运算实现窗口滑动。两种方法的时间复杂度均为O(n),空间复杂度O(n)。关键点在于如何处理数组的环形特性,通过取模运算避免越界。
2025-07-25 19:19:12
267
原创 滑动窗口---6(稍难)
题目《爱生气的书店老板》要求计算在不改变老板生气时间的条件下,通过特定技巧最大化顾客满意度。基本思路是:首先统计老板不生气时的顾客总数,然后利用滑动窗口算法计算在连续minutes时间段内,将生气时间转为不生气能带来的最大顾客增量。最终结果为两者之和。灵茶山艾府的解法通过维护一个滑动窗口来高效计算最大增量,时间复杂度为O(n)。该问题展示了如何将原始问题分解为静态统计和动态优化两部分,并结合滑动窗口技巧获得最优解。
2025-07-25 15:28:14
305
原创 滑动窗口-5
该问题要求在卡牌数组两端取k张牌,使点数之和最大。解法采用滑动窗口思想:先计算前k个数的和作为初始值,然后依次从右边取一张牌、左边放一张牌,不断更新最大值。同时还考虑了直接取后k个数的特殊情况。时间复杂度O(n),空间复杂度O(1)。
2025-07-24 19:37:14
281
原创 滑动窗口-4
题目摘要:本文解析了两道滑动窗口相关的LeetCode题目(2841和2461)。主要思路是使用定长滑动窗口配合哈希表统计元素频率,通过维护窗口内不同元素数量来求解最大子数组和。解题要点包括:1)使用字典统计元素频率;2)通过len(dict)直接获取不同元素数量;3)窗口移动时正确更新元素频率和当前和。作者对比了自己的解法与题解,指出优化点在于直接使用len(dict)而非额外变量统计不同元素数量,并强调应该多参考优质题解。两道题的核心区别在于约束条件不同(2841要求不同元素数≥m,2461要求等于k)
2025-07-24 13:31:07
276
原创 算法学习--滑动窗口
滑动窗口是一种高效的算法技巧,用于处理数组/字符串的子序列问题。其核心思想是通过两个指针(left和right)动态调整窗口范围,在O(n)时间内解决问题。
2025-07-22 17:22:15
1150
原创 多线程-4-线程池
Python线程池使用指南: 线程池通过复用线程降低创建/销毁开销,适用于I/O密集型任务。推荐使用concurrent.futures.ThreadPoolExecutor实现,支持两种主要用法: submit()返回Future对象,配合as_completed()按完成顺序获取结果 map()直接返回结果迭代器,按任务提交顺序输出 线程池结合with语句可自动管理资源释放,有效控制并发数量(通过max_workers参数)。案例演示了网络请求、文件处理等场景下的线程池应用,相比单线程大幅提升效率。
2025-07-18 17:53:35
819
原创 多线程-3-线程同步
本文介绍了Python threading模块中的几种线程同步机制:Lock、RLock、Condition和Semaphore。Lock是最基础的互斥锁,用于防止多线程同时访问共享资源;RLock是可重入锁,允许同一线程多次获取锁;Condition用于线程间的条件通知;Semaphore则控制对共享资源的并发访问数量。文章还展示了这些机制的实际应用场景,包括线程安全的数据修改、线程间通信以及并发控制等,并提供了详细的代码示例来说明它们的使用方法和注意事项。
2025-07-18 17:47:40
889
原创 多线程-2-线程间通信
在 Python 中,实现线程间通信有多种方法,主要依赖 threading 和 queue 模块。这些机制可以帮助你安全地在多个线程之间传递数据和同步操作。
2025-07-18 17:35:05
199
原创 Python 全局解释器锁 (Global Interpreter Lock - GIL)
全局解释器锁 (GIL) 是CPython解释器(官方、最常用的 Python 解释器)中的一个互斥锁 (mutex)。它的核心作用是:在任意时刻,只允许一个线程执行 Python 字节码。这意味着,即使你的计算机有多个 CPU核心,一个 CPython 进程中的多个线程也无法真正地并行执行 Python 代码。它们可以并发执行(即交替执行),但不能在同一瞬间并行运行。
2025-07-18 17:02:14
292
原创 git更改远端文件名称以及删除指定文件夹
git添加remote文件是十分容易的,但是删除remote的文件以及更改remote文件名称是比较麻烦的,所以根据我的实际遇到的问题,讲解如何删除remote文件夹以及rename远端folder_name
2025-06-20 12:30:04
341
原创 强制删除文件--无视任何权限
一个系统更新但尚未更新运行的文件夹,花费了我一个多小时的时间,这期间所有的方法无济于事,于是我将我最终成功删除的方法叫做终极方法!!
2025-02-18 17:25:49
574
原创 通过IP地址查看终端具体位置
最近关于deepseek的热度不断,无论是deepseek的优秀性价比和能力,以及deepseek遭受到海外攻击然后国内反击的AI上甘岭,随之而来的是铺天盖地的营销号,要擦亮自己的眼睛,要勇于质疑和证实网络言论的真实性。其中一点,中国红客并没有接收到来自deepseek的网络反击的请求,而且deepseeek的服务器没有在杭州,我们通过最简单的Ping命令就可以知道服务器在哪里,接下来是具体方法介绍。
2025-02-04 12:46:49
642
原创 Windows系统本地部署deepseek 更改目录
无论是ollama还是部署LLM时候都默认是系统磁盘,对于Windows系统,我们一般不把应用放到系统盘(C:)而是放到其他盘,所以需要更改安装目录,该篇文章主要是用于解决windows系统部署系统中的安装目录更改的问题。
2025-01-31 22:09:30
6729
5
原创 在IDE中使用Git
我们在开发的时候肯定是经常使用IDE进行开发的,所以在IDE中使用Git也是非常常用的,接下来以IDEA为例,其他的VS code ,Pycharm等IDE都是一样的。
2024-12-14 20:38:35
1037
原创 Git-基础操作命令
我们创建并且初始化这个仓库以后,我们就要在里面进行操作。Git 对于文件的增删改查存在几个状态,这些修改状态会随着我们执行Git的命令而发生变化。创建以后但是与git没关系要执行使得从工作区到缓存区暂存区----> 仓库。
2024-12-12 18:33:02
690
原创 历史书单横跨千年
《考古中国:15位考古学家说上下五千年》 中信出版社 《何以中国:公元前2000年的中原图景》 夏朝 许宏 《翦商》 商朝 李朔 《西周史》 西周 许倬云 《西周的灭亡》 李峰 东周 春秋《失败者的春秋》战国《战国歧途》 刘勃 比小说好看 秦朝 《秦谜》《秦崩》《楚亡》《汉兴》李开元 楚汉 《刘邦》佐竹靖彦 西汉 《西汉四百年》李东 新朝 ’王莽‘ 《祥瑞:王莽和他的时代》 东汉 《洛阳大火:公元23-220年的后汉史》 三国 《大汉帝国在巴蜀
2024-12-03 13:52:12
448
Java实现局域网内两点文件传输
2024-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人