Leetcode 2023-12-21 题目分享
2866. 美丽塔 II [Medium] 题解
Leetcode 美丽塔 II
给你一个长度为 n
下标从 0
开始的整数数组 maxHeights
。
你的任务是在坐标轴上建 n
座塔。第 i
座塔的下标为 i
,高度为 heights[i]
。
如果以下条件满足,我们称这些塔是 美丽 的:
1 <= heights[i] <= maxHeights[i]
heights
是一个 山脉 数组。
如果存在下标 i
满足以下条件,那么我们称数组
heights
是一个 山脉 数组:
- 对于所有
0 < j <= i
,都有heights[j - 1] <= heights[j]
- 对于所有
i <= k < n - 1
,都有heights[k + 1] <= heights[k]
请你返回满足 美丽塔 要求的方案中,高度和的最大值 。
示例 1:
1 | 输入:maxHeights = [5,3,4,1,1] |
示例 2:
1 | 输入:maxHeights = [6,5,3,9,2,7] |
示例 3:
1 | 输入:maxHeights = [3,2,5,5,2,3] |
提示:
1 <= n == maxHeights <= 10^5
1 <= maxHeights[i] <= 10^9
思路
- 山脉=>从左到右递增,从右到左递减。
- 容易联想到前后缀分解:分别处理前缀和后缀递增数组,找到对应的最大和。
- 构造递增数组,使和最大=>维护单调递增栈。
代码
1 | var maximumSumOfHeights = function(maxHeights) { |
复杂度分析
- 时间:O(n),每个元素至多被push一次和pop一次。
- 空间:O(1)。
Comments
Comment plugin failed to load
Loading comment plugin