给你一个长度为 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 <= n == maxHeights <= 103
1 <= maxHeights[i] <= 109
对于没有思路的,至少把暴力的写法搞出来,而不是什么都没有
impl Solution {
pub fn maximum_sum_of_heights(max_heights: Vec<i32>) -> i64 {
let n = max_heights.len();
let mut res = 0i64;
for i in 0..n {
let mut ans = 0i64;
let mut cur = max_heights[i] as i64;
for j in (0..=i).rev() {
cur = cur.min(max_heights[j] as i64);
ans += cur;
}
cur = max_heights[i] as i64;
for j in i + 1..n {
cur = cur.min(max_heights[j] as i64);
ans += cur;
}
res = res.max(ans);
}
res
}
}
#[test]
pub fn test_it() {
Solution::maximum_sum_of_heights(vec![1000000000, 1000000000, 1000000000]);
}
注意不要缩小返回的值的最小范围为 i64