81、搜索旋转排序数组 II
二分搜索,注意第 34
行的 L = L + 1
的条件判断,在最坏情况下,会使得该二分搜索退化为 O(N)
的时间复杂度。
1 | class Solution { |
82、删除排序链表中的重复元素 II
模拟题
1 | class Solution { |
83、删除排序链表中的重复元素
模拟题,线上代码铁定不能这么写,内存泄露有木有!
1 | class Solution { |
84、柱状图中最大的矩形
一个很自然的想法是,以当前柱子为高,向两边遍历,时间复杂度为 $O(n^2)$。降低复杂度的关键是,如何快速找到以当前柱子为高的左右边界left_index 和 right_index
,维护一个单调的递增栈 >=
,即可快速找到 left_index 和 right_index
。具体如代码第 14 行所示,整体时间复杂度为 $O(n)$ 。
1 | class Solution { |
85、
86、分隔链表
使用两个指针即可。
1 | class Solution { |
88、合并两个有序数组
一个小的 trick
是从后往前遍历,时间复杂度 $O(n+m)$, 空间复杂度 $O(1)$ 。
1 | class Solution { |