开始时候 我想要通过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;
  }