leetcode-179. 最大数
记录 LeetCode 179「最大数」的解题思路。从普通数值排序和字典序排序的局限出发,通过比较两个数字不同拼接顺序的大小,推导出自定义排序规则,并使用 Python 的 cmp_to_key 实现排序,最后处理全零的特殊情况。
记录 LeetCode 179「最大数」的解题思路。从普通数值排序和字典序排序的局限出发,通过比较两个数字不同拼接顺序的大小,推导出自定义排序规则,并使用 Python 的 cmp_to_key 实现排序,最后处理全零的特殊情况。
记录 LeetCode 239「滑动窗口最大值」的解题思路。利用单调队列维护窗口最大值,通过队尾删除较小元素、队头移除过期索引,避免重复遍历窗口,将时间复杂度优化到 O(n),附 Python 实现。
记录 LeetCode 136「只出现一次的数字」的解题过程。从哈希表统计出现次数入手,再利用异或运算的性质,让成对出现的数字相互抵消,将额外空间复杂度从 O(n) 优化到 O(1),附 Python 实现。
通过 LeetCode 509「斐波那契数」和 322「零钱兑换」两道题,记录动态规划的基本思路。从朴素递归出发,利用备忘录解决重复计算问题,再改为自底向上的迭代实现,理解状态定义、状态转移和空间优化,附 Python 代码。
通过 LeetCode 104、144、543 三道二叉树题目,记录递归的两种常见思路:分解子问题与遍历整棵树。从最大深度的两种实现出发,进一步理解前序遍历、后序位置汇总子树信息,以及如何利用左右子树深度计算二叉树直径,附 Python 实现。
整理双指针算法的常见用法,通过七道 LeetCode 题目,记录快慢指针在数组去重、链表去重和元素移动中的应用,以及左右指针求两数之和、反转字符串和中心扩散寻找最长回文子串的解题思路,附 Python 实现。