这个题我一开始是递归 从底层出发 比到顶层 显然时间复杂度不允许
后来想了一种n时间复杂度的
开两个数用来维护最大值和最小值就可以了,什么意思呢
比如 1 3 6 2 8 4 0 0 8是我们要求的数组
int last = Integer.Min_Value;
int cur = Integer.Min_Value;
分别代表了上一个最大值和当前最大值
我们走到a[0] cur = 1
到a[1] cur=3 last = 1
继续走 cur=6 last=3
...
维护到最后,这两个数就是最大值和次大值了
但是既然要求的是n+logN,那就用竞赛的思想(网上看的)
分析:
例如这n(n=8)个数分别是:8 7 9 2 3 6 10 12