开始时候 我想要通过vector中的erase方法来将vector中的重复元素删去 但是这样做毫无疑问有两个问题
1 内存占用太大了
2 这样的话vector.size()获取的数量将会不断减少 使得循环(i < vector.size())出现错误
那么如何解决呢? 答案是 使用一个新的列表 将需要留下的元素push_back到新的列表中.
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main (){
int n;
cin >> n;
if (n >= 1 && n <= 2) {
cout << "0";
return 0;
}
vector<long long> H;
for (int i = 0 ; i < n ; i++){
long long h;
cin >> h ;
H.push_back(h);
}
int m = 0;
vector<long long> H2;
H2.push_back(H[0]);
for (int i = 1 ; i < n; i ++){
if (H[i]- H[i-1] != 0) H2.push_back(H[i]);
}
//for (int i = 0; i < H2.size() ; i ++){
// cout << H2[i] <<endl;
//
for (int i = 0; i < H2.size() - 2 ; i ++){
if (H2[i+1] - H2[i] > 0 && H2[i+2] - H2[i + 1] < 0) m++;
}
cout << m;
return 0;
}