-6

次のケースでは、番号配置アルゴリズムまたは 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;
       }
     }
   }
});
4

2 に答える 2

2

そのために使用できます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]

例を見る

于 2013-04-08T11:01:59.893 に答える
-1

これは、要素がソートされている場合に実行できます。

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]; を取得します。

于 2013-04-08T11:03:59.570 に答える