テストTIL 62日間アルゴリズム/コーディング
1208 ワード
アレイ内で最後に0を移動
[0,1,0,3,12] => [1,3,12,0,0]
作成
const moveZeroes = nums => {
for(let i = nums.length-1; i > -1; i--) {
if(nums[i] === 0) {
nums.splice(i, 1);
nums.push(0);
}
}
return nums;
}
問題を見た後、最初の考えはpopやpushを使いたいということです.通常使用されるfor文は、インデックス0から、すなわち配列の前面からチェックされるため、popやpushの使用には適していないと考えられるため、配列の後ろからfor文を作成して動作させる.
慣れが怖いのは元の使い方ではないので、後からfor文を使うときは少し混同しています.
その後、その要素が0であるか否かを判別し、0であれば配列からその要素を削除する.
この部分は最初はsliceを使ってカットする形で実現していましたが、結果は思ったほどではなかったのでmdnを検索しました...
From. MDN slice()メソッドは、配列の開始から終了(終了を含まない)までの浅いコピーを新しい配列オブジェクトに返します。元の案は変わらない。
sliceはfilter,mapと同様に新しい配列を返す方法である.
道理で私の考え通りに出力できないと思います.
次に考えられるのがカット方法なので、カットを使ってみました.
よく使われる方法ではありませんが、配列に要素を追加・削除する機能があることを知っていたので、今回改めてお馴染みしました.
これにより,
nums.splice(i, 1)
を用いて配列内の0を削除し,pushを用いて0を配列の後ろに戻し,関数を完了する.私は毎日できるだけ問題を解いていますが、これは役に立ちますか?よくあることです.すぐに成果が出る部分じゃないからそう思う
しかし、毎回使う方法の新しい点を発見するのは、毎日感じられる進歩だと思います.簡単な部分から一歩一歩やっていくと言う人も多いですが、よくできているようです.
Reference
この問題について(テストTIL 62日間アルゴリズム/コーディング), 我々は、より多くの情報をここで見つけました https://velog.io/@winney_77/TIL-62-day-알고리즘코딩테스트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol