Problem: 2210. 统计数组中峰和谷的数量
Code
class Solution {
public:
int countHillValley(vector<int>& nums) {
int cnt = 0;
int n = nums.size();
for(int i = 1; i < n - 1; i ++) {
// if(nums[i] > nums[i + 1] && nums[i] > nums[i - 1]) cnt ++;
// else if(nums[i] < nums[i + 1] && nums[i] < nums[i - 1) cnt ++;
int idx1 = -1, idx2 = -1;
int add = 0;
for(int i1 = i - 1; i1 >= 0; i1 --) {
if(nums[i1] != nums[i]) {
idx1 = i1;
break;
}
}
for(int i2 = i + 1; i2 < nums.size(); i2 ++) {
if(nums[i2] != nums[i]) {
idx2 = i2;
break;
}
else if(nums[i2] == nums[i]) {
add ++;
}
}
cout << i << " " << idx1 << " " << idx2 << endl;
if(idx1 != -1 && idx2 != -1 && (nums[idx1] < nums[i] && nums[idx2] < nums[i] || nums[idx1] > nums[i] && nums[idx2] > nums[i])) {
cnt ++;
}
i += add;
}
return cnt;
}
};