lanqiao oj 185 修改数组

简介: lanqiao oj 185 修改数组

用户登录

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 1e6 +10 ;
int n ;
int a[N] ;
int s[N] ;
int find(int x){
  if(x != s[x]) s[x] = find(s[x]) ;
  return s[x] ;
}
int main(){
  cin >> n ;
  for(int i = 1 ; i <= N ;i ++) s[i] = i ; //因为我们要求的并查集可能很大,所以初始化更多一点 
  for(int i = 1 ; i <= n ;i ++){
    int x ; cin >> x ; 
    int root = find(x) ;//我们先找到这个数的根节点,根节点就是现在这个数已经排到的第几个数 
    a[i] = root ;//我们把a[i]安排根节 
    s[root] = find(root + 1) ;//因为根节点已经用了,所以我们把当前根节点的根节点,指向下一个数的根节点 
  }
  for(int i = 1 ; i <= n ;i ++) cout << a[i] <<" " ;
  cout << endl ;
}
目录
相关文章
|
5月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
5月前
【每日一题Day266】LC18四数之和 | 排序+双指针
【每日一题Day266】LC18四数之和 | 排序+双指针
37 1
|
2天前
lanqiao OJ 2143 最少刷题数
lanqiao OJ 2143 最少刷题数
6 0
|
5月前
|
Java
每日一题《剑指offer》数组篇之二维数组中的查找
每日一题《剑指offer》数组篇之二维数组中的查找
48 0
|
5月前
|
算法
牛客网-二维数组的查找
牛客网-二维数组的查找
49 0
|
11月前
|
存储
数组OJ题(总)
数组OJ题(总)
62 0
|
11月前
|
存储
数组OJ题(1)
数组OJ题(1)
41 0
|
11月前
|
存储 算法
数组OJ题(2)
数组OJ题(2)
95 0
|
11月前
|
存储
数组OJ题汇总(一)
数组OJ题汇总(一)
58 0
栈和队列OJ题:LeetCode--20.有效的括号
栈和队列OJ题:LeetCode--20.有效的括号:详细题解以及图解和完整代码
59 0