题解 | #数组的partition调整#

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;



int main() {
  int len = 0;
  cin >> len;
  vector<int> arr(len, 0);
  for (int i = 0; i < len; ++i) {
    cin >> arr[i];
  }
  int u = 0;
  int index = 1;//代表索引为1
  //首先生成变量u, arr[0,...u]表示在区间[0, u]上无重复并且升序,记这个区域为A,初始值u为0;
  //第一个值如果不等于第0个值,说明第一个值需要加到区域A里面,也即++u,相等的话index++
  while (index < len) {
    if (arr[index] != arr[u]) {
      swap(arr[++u], arr[index++]);
    } else {
      index++;
    }
  }
  for (auto iter : arr) {
    cout << iter << " ";
  }
  return 0;
  //cout << "\n";
  
  
  
}



全部评论

相关推荐

09-22 22:22
中山大学 Java
乌鱼子萨奇:羡慕你啊,直接转正了,都不用经历秋招的炼狱,但是你少经历了很多痛苦的事情啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务