文章
11
粉丝
406
获赞
3
访问
84.7k
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
void merge(int *array,int l,int mi,int r){
int *tmp=new int[mi-l];
for(int i=0;i<mi-l;i++){
tmp[i]=array[l+i];
}
int i=0,j=mi,k=l;
while((l+i<mi)&&(j<r)){
array[k++]=(array[j]<tmp[i])?array[j++]:tmp[i++];
}
while(l+i<mi){
array[k++]=tmp[i++];
}
delete []tmp;
}
void mergesort(int *array,int l,int r){
if(r-l<2)return;
int mi=(l+r)>>1;
mergesort(array,l,mi);
mergesort(array,mi,r);
merge(array,l,mi,r);
}
int deduplicate(int* array,bool* flag,int l, int r){
if(r-l<2)return(r-l==1)?1:0;
int last_ele=array[l],rear=l;
for(int i=l+1;i<r;i++){
if(array[i]!=last_ele){
rear++;
last_ele=array[i];
if(rear<i)array[rear]=array[i];
}
else{
flag[rear]= true;
...
登录后发布评论
6
6
6
6
6
6