編碼與禪
自由軟件創作者
文字
接雨水
算法这篇文章介绍了三种计算接雨水问题的方法:单调栈解法通过寻找“凹”形区域并以水平切片方式计算水量,前后缀分解通过预先计算每个位置左右两侧的最大柱子高度来确定垂直切片的水量,而相向双指针法则在优化空间复杂度的同时,通过双指针相向遍历实时更新最大高度并累加水量。
单调栈
算法单调栈单调栈通过维护温度值的单调性,将寻找“下一个更高温度”的时间复杂度从 O(n²) 优化至 O(n),其核心在于避免了重复比较并确保每个元素只入栈出栈一次。
相向双指针(二)
算法双指针本文系统讲解了相向双指针算法的基本原理和实际应用。相向双指针通过在数组或字符串的两端设置指针,让它们向中间移动来解决问题,这种模式特别适合处理对称性、反转和双向遍历的场景。
相向双指针(一)
算法双指针本文系统讲解了相向双指针算法的基本原理和实际应用。相向双指针通过在数组或字符串的两端设置指针,让它们向中间移动来解决问题,这种模式特别适合处理对称性、反转和双向遍历的场景。
完全掌握不定長滑動窗口
算法滑動窗口本文通過多個LeetCode題目實例,系統講解了不定長滑動窗口算法的應用。文章詳細展示了如何在不同場景下使用滑動窗口的兩步走套路:右指針擴展窗口並更新狀態,當條件不滿足時移動左指針收縮窗口。涵蓋了最大無重複子數組、最長無重複字符子串、刪除元素後全1子數組、最小長度子數組和乘積小於K子數組等多種情況,並提供了Python和Scheme兩種語言的代碼實現,展示了狀態記錄和指針一步到位等優化技巧。