Java实现删除排序数组中重复元素的方法小结【三种方法比较】
本文实例讲述了Java实现删除排序数组中重复元素的方法。分享给大家供大家参考,具体如下:
题目描述:
给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
一:通过ArrayList解决
时间复杂度和空间复杂度都为O(n)
ArrayListlist=newArrayList (); //去掉数组中重复的元素 publicintremoveTheagain01(int[]array){ if(array==null||array.length==0){ return0; }elseif(array.length==1){ return1; }else{ inti=0; intn=array.length-1; while(i<=n){ if(i==n){ list.add(array[i]); i++; }else{ intj=i+1; if(array[i]==array[j]){ while(j<=n&&array[i]==array[j]){ j++; } } list.add(array[i]); i=j; } } for(intk=0;k 二:利用System.arraycopy()函数来复制数组
时间复杂度为O(n^2),空间复杂度为O(n)
publicintremoveTheagain02(int[]array){ if(array==null||array.length==0){ return0; }elseif(array.length==1){ return1; }else{ intend=array.length-1; for(inti=0;i<=end;i++){ if(i三:借助临时变量解决问题
时间复杂度O(N),空间复杂度O(1)
publicintremoveTheagain03(int[]array){ if(array==null||array.length==0){ return0; }elseif(array.length==1){ return1; }else{ inttemp=array[0]; intlen=1; for(inti=1;i总结:
数组下标(指针)与临时变量,是解决数组相关面试题的两大法宝**
PS:本站还有两款比较简单实用的在线文本去重复工具,推荐给大家使用:
在线去除重复项工具:
http://tools.jb51.net/code/quchong在线文本去重复工具:
http://tools.jb51.net/aideddesign/txt_quchong更多关于java相关内容感兴趣的读者可查看本站专题:《Java数组操作技巧总结》、《Java字符与字符串操作技巧总结》、《Java数学运算技巧总结》、《Java数据结构与算法教程》及《Java操作DOM节点技巧总结》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。