前缀后缀法

剑指 Offer 66. 构建乘积数组

238. 除自身以外数组的乘积

768. 最多能完成排序的块 II

6190. 找到所有好下标

 

该类型的题目最大的特点:

整体思路:用两个数组,分别统计「从左到右」和「从右到左」的信息

直接看题吧!!

构建乘积数组

题目详情可见 剑指 Offer 66. 构建乘积数组

对于这个题目,用两个数组分别统计「从左到右」和「从右到左」的乘积

「从左到右」:left[i]表示[0...i-1]的乘积

「从右到左」:right[i]表示[i+1...n-1]的乘积

除自身以外数组的乘积

题目详情可见 除自身以外数组的乘积

几乎和上一题一模一样!!

最多能完成排序的块 II

题目详情可见 最多能完成排序的块 II

用两个数组分别存前缀最大值和后缀最小值

如果ii + 1之间可以分块,那么必有prefMax[i] <= suffMin[i + 1]

找到所有好下标

题目详情可见 找到所有好下标

对于这个题目,用两个数组分别统计「从左到右」和「从右到左」的最长非递增/非递减的子数组长度

「从左到右」:left[i]表示[0...i-1]中最长非递增的长度

「从右到左」:right[i]表示[i+1...n-1]的最长非递减的长度