AI代码陪练第二日

68 阅读1分钟

问题描述

对于一个有 N 个元素的数组,包含如下的元素 h1, h2, ..., hn,对于 k 个相邻的元素,我们定义它的最大面积如下: R(k)=kmin(h[i],h[i+1],....,h[i+k1]) R(k) = k * min(h[i], h[i + 1], ...., h[i + k - 1])

求 R(k) 的最大值

输入格式

总共有两行,第一行是数组长度 N,第二个是空格分割的所有数组的内容

输出格式

输出 R(k) 的最大值

输入样例

5
1 2 3 4 5

输出样例

9

数据范围

  • 1 <= N <= 10^5
  • 1 <= h[i] <= 10^6

20240913102510.jpg

思路:

整体思路是通过计算每个元素的左右边界,然后根据左右边界计算宽度,进而计算以当前元素为最小值的面积,最终找出最大面积。

AI助手给我提示的代码优化方向比较符合预期,建议我再使用一个栈来进行优化, 在计算左右边界的过程中,使用了一个栈来辅助。可以考虑在这部分添加一些错误处理,比如当栈为空时的特殊情况处理。