C语言数组去重返回数组长度
//去重方法一(arr数组已排序) int deleteRepitition(int *arr,int len) {//返回去重后的长度,然后根据指针遍历每个元素 int k = 0; for (int i = 0;i<len;i++) { if (*(arr+i)-*(arr+i+1)) *(arr+k++) = *(arr+i); } if (*(arr+len-1) == *(arr+len)) *(arr+k++) = *(arr+len-1);//如果最后一个元素加号和后一个存储空间元素等,则需要单独处理
return k;
}
//去重方法二 int del(int * arr,int n) { int i; for (i=0;i<n-1;i++) { for (int j=i+1; j<n; j++) {//从arr[i]的下一位开始比较,直到最后一位 if (arr[i] == arr[j]) {//如果数字重复 for (int k=j;k<n-1;k++) arr[k] = arr[k+1];//从arr[k]开始,所有数字前移一位 --n;//数组长度 减 1 --j;//同时遍历也要减 1 } } } return n;//返回去重后数组长度 }
//去重方法三(去重输出) int del(int * arr,int len) { for (int i=0;i<len;i++) { for (j=0;j<i;j++) if (arr[i]==arr[j]) break; if (j==i) { printf("%d",arr[i]); } } return 0; }