题解 | #打印极值点下标#
打印极值点下标
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; } }