连续数字排列算法- Javascript

Algorithm for Continuous Number arrangement - Javascript

本文关键字:Javascript 算法 排列 数字 连续      更新时间:2023-09-26

我需要数字排列算法或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],