题解 | #打印极值点下标#

打印极值点下标

https://www.nowcoder.com/practice/7fd72f8ac7964ba3b8baa8735246e1f1

#include<bits/stdc++.h>
using namespace std;

int main() {
    int n;
    while (cin >> n) {
        vector<int> num;//用vector数组存储输入的数据
        for (int i = 0; i < n; i++) {
            int N;
            cin >> N;
            num.push_back(N);
        }
        //遍历数组输出极值点
        for (int i = 0; i < n; i++) {
            //若该元素在数组首位,则只需比后一个元素大/小
            if (i == 0) {
                if (num[i] > num[i + 1] || num[i] < num[i + 1]) {
                    cout << i << " ";
                }
            }
            //若该元素在数组末位,则只需比前一个元素大/小
            else if (i == n - 1) {
                if (num[i] > num[i - 1] || num[i] < num[i - 1]) {
                    cout << i << " ";
                }
            }
            //其他元素需要比前后相邻的元素都大/小才是极值点
            else {
                if ((num[i] > num[i - 1] && num[i] > num[i + 1]) || (num[i] < num[i - 1] &&
                        num[i] < num[i + 1])) {
                    cout << i << " ";
                }
            }
        }
        cout << endl;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务