比如我有15个20以内的数,按从小到大排列,可以是任意的,可以有相同,相同的最多不超个4个,比如说里面最多有4个1,例子它们是 1,1,1,2,3,4,5,7,8,9,10,12,12,13,15我这样标记他们,他的的位置, 数值1 12 13 14 25 36 47 58 79 810 911 1012 1213 1214 1315 15我现要找出这3或4个相同的数,,并把他们替换成0 ,还要知道他的的位置这个例子里面可以找到3个相同的1 并写出1 ,还要写出他们的位置,1,2,3结果是:这串数变成: 0,0,0,2,3,4,5,7,8,9,10,12,12,13,15 3个相同的数:1 4个相同的数:(无) 他们的位置: 1,2,3用js 实现,,低手,请给出具体代码最开始20以内的数可以有0,0的数量不限4个以内,或者说里面可以有0,但无论有几个0我都不理他,
想在这道题中练习的算法意义,试了一下。用了一些js的高级OO,呵呵=======<script>var a=[1,1,1,2,3,3,3,3,4,5,6,6,6,6,6,7,8,8,8,8,9,10,12,12,13,15];//下句排序如果原数念逗据已排可以去掉a=a.sort(function(x,y){return x-y;});var d=new Object();function Record(e,p){ this.element=e; this.pos=p;}document.writeln("处理前的数组:");for(var i in a) document.write(a[i]+' ');var c=1,r=new Record(a[0],0);for(var i=1;i<a.length; i++){ if(a[i]==r.element) c++; else{ d[c]=(c in d)? d[c].concat(r):[r]; if(c>=3) for(var p=r.pos;p<i; p++) a[p]=0; r=new Record(a[i],i); c=1; }}document.writeln("<br/>处理后的数组:");for(var i in a) document.write(a[i]+' ');document.writeln('<br/>');for(var k in d){ if(k>=3){ document.writeln(k+"个相同-数(位置): ") for(var i in d[k]) document.writeln(d[k][i].element+'('+d[k][i].pos+') '); document.writeln('<br/>'); }}</script>=============处理前的数组: 1 1 1 2 3 3 3 3 4 5 6 6 6 6 6 7 8 8 8 8 9 10 12 12 13 15 处理后的数组: 0 0 0 2 0 0 0 0 4 5 0 0 0 0 0 7 0 0 0 0 9 10 12 12 13 15 3个相同-数(位置): 1(0) 4个相同-数(位置): 3(4) 8(16) 5个相同-数(位置盯高猜): 6(10) ==========由于有起始位置,就没必要逐个打印位置。比如“3个相同-数(位置): 1(0) ”凯型就知道1从位置0开始重复3次,0, 1, 2