关于可能更简单的贪心实现方式
查看原帖
关于可能更简单的贪心实现方式
363322
lxy07830楼主2022/9/6 23:03
#include <bits/stdc++.h>
using namespace std;
int n, ans = 2;
int a[100005];
int main(){
    scanf("%d" ,&n);
    for(int i = 1; i <= n; ++i){
        scanf("%d" ,&a[i]);
    }
    for(int i = 2, last = 1; i < n; ++i){
        if((a[last] > a[i] && a[i] < a[i + 1]) || (a[last] < a[i] && a[i] > a[i + 1])){
            last = i;
            ans++;
        }
    }
    printf("%d\n" ,ans);
    return 0;
}

大概思路也是求峰和谷,只不过用 lastlast 实现跳过,最后注意加上首位就行。

实测能AC,但是没有特判 n=1n=1,我想请问一下该算法除了没有特判是否存在其他漏洞。

2022/9/6 23:03
加载中...