哪位大佬帮忙看一下这个代码,虽然已经AC了,但我还是想知道为什么输出个数的时候要减1
#include<bits/stdc++.h>
using namespace std;
int n,a[1111111],m=0,b[1111111];
void quick(int l, int r){
int i=l,j=r,mid=a[(i+j)/2];
while(i<=j){
while(a[i]<mid) i++;
while(mid<a[j]) j--;
if(i<=j){
swap(a[i],a[j]);
i++;
j--;
}
}
if(l<j) quick(l,j);
if(i<r) quick(i,r);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
quick(1,n);
for(int i=0;i<=n;i++){
if(a[i+1]!=a[i]){
b[m]=a[i];
m++;
}
}
cout<<m-1<<endl;
for(int i=1;i<m;i++) cout<<b[i]<<" ";
return 0;
}