本篇总结了双指针算法的应用。
[LC215] Kth Largest Element in an Array / 分治 / 堆排序
在数组中找到第 K 大元素时一个典型题。类似的还有找到前 K 大元素。这道题的多种解法涵盖了堆排序思想和快排思想。
[LC279] Perfect Squares / 动态规划和BFS
第一次做这道题的时候根据标签🏷很容易想到了BFS的解法,而第二次看的时候却想不起来了。将动态规划应用于这道题的时候,使用的小技巧「看似遍历但实则复杂度并不大」。
[LC494] Target Sum / 从经典递归到动态规划
Target Sum 是在练习递归算法(回溯算法)时遇到的经典题目。从无优化的回溯到加上备忘录的回溯,再到动态规划算法,其中步步优化的思想至关重要。
[LeetCode] Traversal
深度优先遍历(DFS)和广度优先遍历(BFS)是在树和图算法中至关重要。两者虽同样作为遍历算法,也有不同的应用场景。DFS 与栈密切相关;BFS 与队列密切相关。
[LC60/62] 用优化的方法替代回溯算法
回溯(Back Tracking)算法相当于使用 BFS 将所有可能的情况遍历一遍,由于使用了递归栈,效率不高。在有些问题中,可以用更优化的方法解决而不需要递归地遍历所有情形。
[LC45/55] Jump Game / 动态规划 / 贪心 / BFS
给定一个数组,每个元素表示该位置可以跳跃的最远长度。从数组的第一个元素开始起跳,确定跳到最后一个元素所需的最小步数/确定能否跳到最后一个元素。