LeetCode #22:Generate Parentheses(括号生成) 题目描述 注意到 1 <= n <= 8,用回溯法进行 dfs 即可解决问题。注意添置左右括号的条件——添加后必须有可能在后续的处理中构成合法的括号排列,画一棵递归树就非常清楚了。 阅读全文
LeetCode #912:Sort an Array(排序数组) 题目描述 题意基本上就是把 “默写快排” 四个大字给拍脸上了,调用标准库的 sort 在面试中肯定是没分的【手动狗头需要注意的是测试用例中存在有序的长数组,如果直接取第一个元素作为快排的枢轴会超时,这里我在每次划分的时候取区间中间的元素作为枢轴来避免超时。 阅读全文
LeetCode #61:Rotate List(旋转链表) 题目描述 思路不难,就是将链尾拆下来插到链首 k 次,类似于 “循环右移”。需要注意的是如果直接写循环 k 次会超时(题目中 k 的范围是 0 <= k <= 2 * 109),这个时候的优化思路是统计一下链表的元素总数 count,再把循环次数设为 k 模 count,就能应对 k 很大但 count 很小的情况了(避免了大量重复的右移)。 阅读全文
LeetCode #53:Maximum Subarray(最大子数组和) 题目描述 本题是一个经典的动态规划问题。需要注意的是解题时将 dp[i] 定义为数组 nums 中以 num[i] 结尾的最大连续子串和,最终不能直接返回 dp[n-1],因为给定数组的最大连续子数组不一定以该数组的最后一个数结尾。这里采用一个额外的 res 变量来记录最大值。 阅读全文