CodeKata | Week 3 Day 4
7192 ワード
質問する
指定した数値配列で、0を配列の最後に移動します.
元の数字の順番を変えないでください.
(新しいアレイは作成しないでください.)
Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
初回アクセス
const moveZeroes = nums => {
for (i=0; i<nums.length; i++) {
if(nums[i]===0){
nums.push(nums.splice(i, 1)[0])
}
}
return nums}
うーん、だめ、、、帰る、、、配列には0が1つしかないのは可能ですが、0が現れた瞬間に終わり、0が2つより大きいとfor loopは回転しません...
2回目のアクセス
const moveZeroes = nums => {
newArr =[]
trashArr =[]
for(i=0; i<nums.length;i++) {
if(nums[i] !== 0) {
newArr.push(nums[i])
} else (trashArr.push(nums[i]))
}
for(i=0; i<trashArr.length;i++){
newArr.push(0)
}
return newArr
};
ほほほ...誰が見てもメモリ時間を無駄にし、余分な長いコードを無駄にしている......もっと短い方法で先にやったに違いない...配列をまっすぐ回し、0をtrashArrに、0をnewArrに、そしてnewArrに置きます.lengthのようです.結果は.🙌 国境を越える🙌 とにかく合格しましたが、そうではないと思いますので、グーグル先生に手伝ってもらい、他の人の方法を探してもらいました.
3つ目の方法
const moveZeroes = nums => {
for(i = nums.length-1; i >= 0; i--){
if(nums[i]===0){
nums.push(nums.splice(i, 1)[0]);
}
}
return nums
};
ああ...後ろから回ればいいんですよね…i=0から変わろうとする偏見はまだ捨てられていないので、ここまでは思いもよらなかった…😭😭Reference
この問題について(CodeKata | Week 3 Day 4), 我々は、より多くの情報をここで見つけました https://velog.io/@hi-yjs/CodeKata-Week-3-Day-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol