数组去重复.doc_第1页
数组去重复.doc_第2页
数组去重复.doc_第3页
数组去重复.doc_第4页
数组去重复.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

您还未登录!|登录|注册|帮助 CSDN首页 资讯 论坛 博客 下载 搜索 更多o CTO俱乐部 o 学生大本营 o 培训充电 o 移动开发 o 软件研发 o 云计算 o 程序员 o ITeye o TUP CSDN-CSDN社区-Java-Java SE 管理菜单 o 生成帖子 o 置顶 o 取消置顶o 推荐 o 取消推荐 o 锁定 o 解锁 o 移动 o 编辑 o 删除 o 帖子加分 o 帖子高亮 o 取消高亮 结帖 发帖 回复 收藏 关于移除一个int数组中重复项的问题, 在线急等问题点数:20分,结帖人:java2000_net vivienlf 等级: 结帖率:100.00% 楼主发表于:2007-05-31 12:46:26我的想法: 定义一个数组:ba.Length 遍历数组a,对每一个ai,判断是否在b中 if ai在b中,继续 else 把ai加到b中, 我的问题是 如果 ai在b中, 应该怎样继续检查下一个? 如果是string可以令ai=null, 但是是int,应该怎样用java语言表达呢? 对我有用0 丢个板砖0 引用 举报 管理 TOP 回复次数:31 thinker28754 等级: #1楼 得分:1回复于:2007-05-31 12:55:09如果是int你可以用Integer这种类型也可以让它等于null. 对我有用0 丢个板砖0 引用 举报 管理 TOP 精华推荐:【生日祝福】祝我们的【awusoft】版主 生日快乐! vivienlf 等级: #2楼 得分:0回复于:2007-05-31 12:58:52可以说详细一点吗, 我不明白 对我有用0 丢个板砖0 引用 举报 管理 TOP 精华推荐:面试题去掉一个已经排好序的数组的重复数字,速度尽量快 lwy8802 (Victim) 等级: #3楼 得分:1回复于:2007-05-31 13:01:00关建字continue 对我有用0 丢个板砖0 引用 举报 管理 TOP 精华推荐:大家J2EE这条路是怎么走过来的?有什么经验教训? vivienlf 等级: #4楼 得分:0回复于:2007-05-31 13:12:02好象还是不对. 我的method: public static int removeDuplicate(int p) int temp = new intp.length; int t = 0; for (int i = 0; i p.length; i+) boolean isDuplicate = false; for(int j=0; j = i; j+) if(tempj = pi) isDuplicate = true; continue; else isDuplicate = false; if (!isDuplicate) tempt+ = pi; /for 但是在做junit test时 显示array index out of bound exception 对我有用0 丢个板砖0 引用 举报 管理 TOP 精华推荐:struts+hibernate的问题 dyw31415926 (守护:struts2.0QQ群) 等级: #5楼 得分:1回复于:2007-05-31 13:19:04参考一下下面的函数: import java.util.ArrayList; import java.util.List; - /* * 去掉重复项的函数 *param intArray 要去掉重复项的int数组 *return int 返回去掉重复项的int数组 */ public int wipeOffRepeat(int intArray) List list = new ArrayList(); for(int i = 0;i intArray.length;i+) if( !list.contains(new Integer(intArrayi) list.add(new Integer(intArrayi); int returnArray = new intlist.size(); for(int i = 0; i list.size();i+) returnArrayi = (Integer)list.get(i).intValue(); return returnArray; 对我有用0 丢个板砖0 引用 举报 管理 TOP 精华推荐:一名应届毕业生对职业生涯规划的求教 vivienlf 等级: #6楼 得分:0回复于:2007-05-31 13:39:07如果不能作很大改动, 需要保持前面的temp 呢? 对我有用0 丢个板砖0 引用 举报 管理 TOP dyw31415926 (守护:struts2.0QQ群) 等级: #7楼 得分:0回复于:2007-05-31 13:50:28public static int removeDuplicate(int p) int temp = new intp.length; int t = 0; for (int i = 0; i p.length; i+) boolean isDuplicate = false; for(int j=0; j = i; j+) if(tempj = pi) isDuplicate = true; break;/这里不是continue else isDuplicate = false; if (!isDuplicate) tempt+ = pi; /for return temp;/加一句返回 但这样做不是一种好办法,因为去掉重复项后,新的数组一般都没原来的数组那么长,你却定义了和原来的数组一样长的新数组,这时后面的数组元素默认为0 对我有用0 丢个板砖0 引用 举报 管理 TOP vivienlf 等级: #8楼 得分:0回复于:2007-05-31 14:39:21那如果我在break前加一句temp.length = temp.length - 1能不能解决呢? 对我有用0 丢个板砖0 引用 举报 管理 TOP vivienlf 等级: #9楼 得分:0回复于:2007-05-31 14:47:14或者在这之后再设另一个ARRAY? 对我有用0 丢个板砖0 引用 举报 管理 TOP aunty_flybird ((好好学习,天天向上)Clif) 等级: #10楼 得分:1回复于:2007-05-31 15:02:06何必弄这么复杂呢,方法有简单的解决方案的时候,还是选择简单的解决方法比较好了 建议使用诸如ArrayList之类的方法来处理 ArrayList list = new ArrayList (); int is = new int1,2,3,3; for(int i = 0; i is.length; i+) if(!list.contains(new Integer(isi) list.add(new Integer(isi); Integer iis = (Integer) list.toArray(); 对我有用0 丢个板砖0 引用 举报 管理 TOP vivienlf 等级: #11楼 得分:0回复于:2007-05-31 15:10:13汗.我也不想啊, 这是题目的要求.要是再设一个array呢? 但是想不出这个新的array的长度应该怎么根据temp来设 对我有用0 丢个板砖0 引用 举报 管理 TOP vivienlf 等级: #12楼 得分:0回复于:2007-05-31 15:13:17create the result array with appropriate size using temp array, and return the result array 对我有用0 丢个板砖0 引用 举报 管理 TOP dyw31415926 (守护:struts2.0QQ群) 等级: #13楼 得分:0回复于:2007-05-31 15:42:12那如果我在break前加一句temp.length = temp.length - 1能不能解决呢? = 数组的空间分配后是不能修改的 ArrayList的方法我已经给出了,我想没有题目会规定用这种方法吧,只要返回的是正确的int,因为在没完成比较前,你并不知道去掉重复项后的数组有多少项,所以用List 存,然后返回时才转成int, 你不能在不知道数组的长度前又要用定长的数组 对我有用0 丢个板砖0 引用 举报 管理 TOP q_yanfei 等级: #14楼 得分:1回复于:2007-05-31 17:06:28你的数组越界了,(j1;j p.length-1; j+)你看看这样行不行! 对我有用0 丢个板砖0 引用 举报 管理 TOP aoyihuashao (傲衣华少) 等级: #15楼 得分:1回复于:2007-05-31 17:15:37建个hashmap 把所有数put进去,在get出来,就没重复的了 对我有用0 丢个板砖0 引用 举报 管理 TOP vivienlf 等级: #16楼 得分:0回复于:2007-05-31 18:12:06我想没有题目会规定用这种方法吧 确实没有题目是用这种方法.只有我们的BT教授. 不知道.anyways , thanks for all your help 对我有用0 丢个板砖0 引用 举报 管理 TOP lv810 (说比做的简单) 等级: #17楼 得分:1回复于:2007-06-01 09:48:40HasSet 去重复 对我有用0 丢个板砖0 引用 举报 管理 TOP maquan (ma:kju) 等级: #18楼 得分:1回复于:2007-06-01 13:41:09不用另外定义一个数组,直接比较就可以了。 int num = a.length; loop: for (int i = 1; i num; ) / 从第二个元素开始处理 for (int j = 0; j i; j+) / 把当前元素跟前面的每个元素进行比较 if (ai = aj) / 如果发现重复,用最末的元素替换当前元素 ai = anum - 1; num-; / 重新处理当前元素 continue loop; / 继续处理下一个元素 i+; / 至此,a0.anum-1 就是无重复的了 对我有用0 丢个板砖0 引用 举报 管理 TOP leojay1 (绯村剑心) 等级: #19楼 得分:1回复于:2007-06-01 17:15:12上面已经说了,直接使用HashSet 有重复的就不加进去,否则就加进去,多简单的。 对我有用0 丢个板砖0 引用 举报 管理 TOP jupiter97 (网际异行) 等级: #20楼 得分:1回复于:2007-06-01 17:42:46先排序,再遍历。 或者最简单的用hashmap 对我有用0 丢个板砖0 引用 举报 管理 TOP iseeiconquer (smallEar) 等级: #21楼 得分:1回复于:2007-06-01 20:24:10日本松下有一位高官说过:即使我们不去拜靖国神社韩国人也不会买我们的产品,但不管我们再怎样的去拜靖国神社,中国人照样会买我们的产品。- 一句让中国人从头凉到脚的话。 每直接或间接地购买100元日本货,你就: 1.为日本厂家增加40元的毛利收入 2.为日本企业增加了20元的扩张资本 3.为日本政府增加了5元的税收收入 4.给日本的所谓自慰队增加了 10颗子弹 5.多印68页的篡改历史的教科书和文件 6.送给小犬蠢一狼参拜鬼社的汽油费 *。如果你买日本汽车,将来开上中国街头的日本坦克就是你造的! *。如果你买日本橱具,将来射穿你儿子头颅的子弹就是你造的! *。如果你买日本电视音响,将来就会在战地喇叭中听到中国人被杀的哀鸣!我们没有时间和权力去采取政治行动,我们只能作力所能及的事,拒买日货是我们对付日本人的最好行动,不但简单而且有效我每天上网必做的一件事就是把此这篇文章贴到可能的地方,只要上网,我至少要贴上10次!作为一个有良知的中国人,来和我和许多爱国人士一起并肩战斗吧! 请把此文贴到一切可能的地方,你一定会为你的所作所为而自豪 朋友们,我庆幸我生于80年代,但我更加痛惜我没能在30年代的战场上手刃鬼子。在我们拥有和平幸福安乐生活的今天,请不要忘了我们爷爷那一代所受到的耻辱! 对我有用0 丢个板砖0 引用 举报 管理 TOP liuxing142 等级: #22楼 得分:1回复于:2007-06-01 22:25:09不好意思,这些都不懂.JAVA语言一点也不懂. 对我有用0 丢个板砖0 引用 举报 管理 TOP dunai2003 (马尔罗尼) 等级: #23楼 得分:1回复于:2007-06-02 09:55:16如果是在做项目,直接用Set型的类,如HashSet,如果要保持输入顺序可用LinkedHashSet,因为Set型类,就是为了保证容器中的元素不能重复。不要用List型,Map型只能保证Key不重复,用Set型的类后,什么算法代码都不用写,直接add就行了。 如果是在做作业,特别是数据结构的作业,还是自己先搞懂再说吧。 对我有用0 丢个板砖0 引用 举报 管理 TOP backhead (为什么我喜欢的女孩那总说马天宇) 等级: #24楼 得分:1回复于:2007-06-02 11:29:19int a=1,2,3,4,2,4,3; int b=new inta.length; int bnum=0; boolean finded; for(int i=0;i a.length;i+) finded=true; for(int j=0;j b.length;j+)if(ai=bj)finded=false; if(finded)bbnum=ai;bnum+; for(int i=0;i a.length;i+)System.out.print(ai); System.out.println( ); for(int i=0;i b.length;i+)System.out.print(bi); - 1234243 1234000 对我有用0 丢个板砖0 引用 举报 管理 TOP likgui (LI) 等级: #25楼 得分:1回复于:2007-06-02 13:58:17关注 对我有用0 丢个板砖0 引用 举报 管理 TOP lyb3333 (光临我们的团队) 等级: #26楼 得分:1回复于:2007-06-02 23:41:56用一个For语句就行了,性能很重要。 对我有用0 丢个板砖0 引用 举报 管理 TOP 石雕 等级: #27楼 得分:1回复于:2007-06-03 11:34:47for( length) if(array.IndexOf(currentOne)=-1) array.add (currentOne); 对我有用0 丢个板砖0 引用 举报 管理 TOP beyondliujiaqi 等级: #28楼 得分:0回复于:2007-06-04 09:02:05该回复于0001-01-01 00:00:00被管理员或版主删除 对我有用0 丢个板砖0 引用 举报 管理 TOP zyy_6 等级: #29楼 得分:1回复于:2007-06-04 10:02:26直接用temp- 对我有用0 丢个板砖0 引用 举报 管理 TOP zyy_6 等级: #30楼 得分:0回复于:2007-06-04 10:03:26并且用for语句,让他找 对我有用0 丢个板砖0 引用 举报 管理 TOP jsczxy2 等级: #31楼 得分:1回复于:2007-06-04 10:56:47int a=new int1,1,2,2,3,3,4,4,5,5; HashSet set=new LinkedHashSet(); for(int i=0;i a.length;i+) set.add(ai); int b=new intset.size(); int c=0; for(Iterator it=set.iterator();it.hasNext();) bc=(Integer)it.next(); System.out.println(bc); c+; 对我有用0 丢个板砖0 引用 举报 管理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论