我写了个不用数组的算法。原理就是从左往右依次考察h[i],若h[i]>h[i-1](前面的就可以丢弃了),则操作+1。
时间O(n),空间O(1)。
C++代码:
#include <iostream>
using namespace std;
int main(void)
{
int n = 0, i = 0, s = 0, t = 0, x = 0; // s=h[i-1],t=h[i],x=操作数
cin >> n;
for (i = 0; i < n; ++i)
{
cin >> t;
if (t > s)
{
x += t - s;
}
s = t;
}
cout << x;
return 0;
}