配列をシャッフルする
5209 ワード
アルゴリズムは、私が奮闘する何かです.私が最近行った会社のインタビューやスクリーニングプロセスのいくつかは、アルゴリズムを巻き込んだ.誰かに話しかける前に排除されることはとても落胆している.最近、アルゴリズムの解法について意図しています.今度は私が取り組むthis Leetcode problem .
私の仕事は、カードのデッキのように一緒に配列の要素をシャッフルすることです.この問題はJavaScriptで簡単です
空の配列を宣言する Aを始める を返します. 反復の後
私がそれに近づいたとき、困難は増加しました
私は4つの変数
空の配列を宣言する カウンタを宣言する Aを始める を返します. セット セット 増加 チェックする 配列を返します.
Given the array nums consisting of 2n elements in the form
[x1,x2,...,xn,y1,y2,...,yn].
Return the array in the form [x1,y1,x2,y2,...,xn,yn].
私の仕事は、カードのデッキのように一緒に配列の要素をシャッフルすることです.この問題はJavaScriptで簡単です
.push()
メソッド.var shuffle = function(nums, n) {
let arr = [];
for ( let i=0; i<n; i++ ) {
arr.push(nums[i], nums[i+n])
};
return arr;
};
arr
返り値for
インデックスがn
. push()
現在の指標nums[i]
and nums[i + n]
を返しますarr
. n
timesは新しい配列を返します.私がそれに近づいたとき、困難は増加しました
push()
. 私は、私がアクセスを必要とするインデックスを追跡するのを苦労していました.それを書いた後、私はパターンを見つけることができました.すべての反復を踏むことは本当に私が必要としたカウンタをクリアしました.私は4つの変数
i, y, x, b
. i
私のコードブロックのリターン配列の最初のインデックスを示します.y
戻り値配列の2番目のインデックスを示します.これらの2つの変数は2回の反復で増加した.x
入力配列の最初のインデックスを示します.b
入力配列の2番目のインデックスを示します.これら2つの変数はそれぞれの反復で1ずつ増分された.パターンをキャッチするために私は本当に徹底的にする必要がありました.その後、私はすぐに、私がする必要があるものを推論することができました.これは私の最終的な解決策です.var shuffle = function(nums, n) {
const arr = [];
let i = 0
for ( let x=0; x < n; x++) {
arr[i] = nums[x];
arr[i+1] = nums[x+n];
i+=2;
};
return arr;
};
arr
返り値i
ループの外側には、インクリメントされます.for
インデックスまで実行されるループx
がn
. arr[i]
to nums[x]
arr[i+1]
to nums[x+n]
i
2によってx < n
Reference
この問題について(配列をシャッフルする), 我々は、より多くの情報をここで見つけました https://dev.to/javila35/shuffle-the-array-javascript-4jd7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol