猿问

oc中如何去掉一个数组中的重复元素?

oc中如何去掉一个数组中的重复元素


九州编程
浏览 1189回答 4
4回答

DIEA

可以使用双重循环,逐一对比元素,如有重复,则删除的方法去重。其思路为1、依次遍历循环中的每一个元素。2、对于任意一个元素,依次与之前的元素进行对比,如果有重复则删除。3、删除操作可以采用将后续元素逐个前移,达到覆盖当前元素的效果。在此基础上可以进行一点优化,即,不需要每次删除元素均前移所有元素,而是把需要保留的元素放到"应该"放的位置即可,这样可以提高效率。以整型数组为例,参考代码如下:1234567891011121314int&nbsp;remove_repeat(int&nbsp;*a,&nbsp;int&nbsp;l)//对起始地址为a,长度为l的数组进行去重,新的长度以返回值形式返回。{&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i,j,&nbsp;r=0;&nbsp;//i,j为循环下标,r为去重后元素总数,初始值为0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;l;&nbsp;i&nbsp;++)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;r;&nbsp;j&nbsp;++)//检查是否重复&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a[j]&nbsp;==&nbsp;a[i])&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(j&nbsp;==&nbsp;r)&nbsp;//没有重复元素&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[r++]&nbsp;=&nbsp;a[i];&nbsp;//将当前元素放置与去重后数组的尾部,并增加去重后的总数。&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;r;&nbsp;//返回新的长度。}

狐的传说

因为数组的长度不能变,所以要想“去掉”只能重定义一个数组 //假设oldArray为原数组,newArray为最后结果,可以做一个函数 function f(Array oldArray){ Array newArray; //目标数组 var m=oldArray.length; for(var i=0;i

子衿沉夜

先排序,在进行遍历比较。12345678910111213141516171819202122232425262728293031323334353637#include&nbsp;<stdio.h>&nbsp;//&nbsp;升序数组srcvoid&nbsp;sort(int&nbsp;*src,&nbsp;int&nbsp;len){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;tem;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;len;&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;len&nbsp;-&nbsp;i&nbsp;-&nbsp;1;&nbsp;j++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(src[j]&nbsp;>&nbsp;src[j+1])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tem&nbsp;=&nbsp;src[j];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src[j]&nbsp;=&nbsp;src[j+1];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src[j+1]&nbsp;=&nbsp;tem;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;num[10]&nbsp;=&nbsp;{0,&nbsp;2,&nbsp;5,&nbsp;1,&nbsp;1,&nbsp;5,&nbsp;4,&nbsp;9,&nbsp;2,&nbsp;1},&nbsp;d;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;=&nbsp;0,&nbsp;cnt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(num,&nbsp;10);&nbsp;&nbsp;//&nbsp;排序&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;num[0];&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;1;&nbsp;i&nbsp;<&nbsp;10;&nbsp;i++)&nbsp;//&nbsp;遍历比较&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(num[i]&nbsp;!=&nbsp;d)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;",&nbsp;d);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;num[i];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(num[9]&nbsp;==&nbsp;d)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",&nbsp;d);&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
随时随地看视频慕课网APP
我要回答