我需要数字排列算法或javascript代码
input : [0,0,1,1,3,3,5,5,7,8,8,8,10]
output : [0,0,1,1,2,2,3,3,4,5,5,5,6]
谢谢我尝试以下代码段
var array=[];
array[0]=0;
array[1]=0;
array[2]=2;
array[3]=2;
array[4]=5;
array[5]=5;
array[6]=6;
$.each(array,function(i,val){
if(i==0){
prev=eval(val);
}else{
if(prev!=val){
if(val!=eval(prev)+1){
array[i]=eval(prev+1);
prev=eval(prev+1);;
}else{
prev=val;
}
}
}
});
您可以使用Array.prototype.map
:
var c = 0,
array_in = [0,0,1,1,3,3,5,5,7,8,8,8,10],
array_out = [];
array_out = array_in.map(function(a,i,arr){return (arr[i] > arr[i-1])?++c:c});
// array_out == [0,0,1,1,2,2,3,3,4,5,5,5,6]
参见示例
当元素按顺序排序时可以这样做。
A[n]=[0,0,1,1,3,3,5,5,7,8,8,8,10] // as these these are in sorted order .
int B[n];
for(int i=1,B[0]=0;i<n;i++)
{
if(A[i]==A[i-1])
B[i]=B[i-1];
else
B[i]=B[i-1]+1;
}
最后你将得到B [n] =[0, 0, 1, 1、2、2、3、3、4、5、5、5、6],