Algorithm 03 | code kata



質問する


指定した数値配列で、0を配列の最後に移動します.
元の数字の順番を変えないでください.
(新しいアレイは作成しないでください.)
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

私の答え

const moveZeroes = nums => {

let count =0;
for(i=0;i<nums.length;i++){
 if(nums[i]===0){
   nums.splice(i,1);
   i--;
   count++;
 }
}
for(i=0;i<count;i++){
  nums.push(0);
}

  return nums;
}

方法


1)まず、配列から要素0の値を削除する必要があります.
特定の要素値を削除する方法はspliceを使用するか、フィルタを使用します.
filterの場合、条件を満たす新しい配列が返されます.
既存の配列から値を削除する方向に接続関数を使用してアクセスしてみました.
2)インデックスiを繰り返し文でnumsの与えられた配列の要素値に1つずつ近づけ、0の場合
最初のカットから1つだけ削除します.

注意:spliceは元の配列の要素の削除に伴ってインデックス値を減少させるため、i-iも1減少します。


3)反復文でカウント0のcountを1増加
4)count個数でnums配列に0を押す.
pushメソッドは、後から要素値を追加し、元の配列の値を変更することで返します.
久しぶりにCode Kataの問題をアップロードしました...毎日アルゴリズムの問題をやっていますが、自分自身の悩みで久しぶりにやった問題が嬉しかったのでアップしました.D
ろ過方法
  • st words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
    
    const result = words.filter(word => word.length > 6);
    
    console.log(result);
    // expected output: Array ["exuberant", "destruction", "present"]
    剪断方法
  • は、例
  • として理解する.
    var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
    var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
    
    // myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
    // removed is ["angel", "clown"]
    「spliceのパラメータ-MDN」を参照してください.
    array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
    切り取りを開始するインデックス、切り取りを開始する要素の数、追加する要素1、2、