JavaScriptでのHackerrankの「Circular Array Rotation」の問題の解決方法


  1. 入力として与えられた配列、回転回数、クエリのインデックスを取得します。

  2. 回転回数を配列の長さで割った余りを計算します。これは、実際に要素を右に回転させる回数です。例えば、配列の長さが5で回転回数が7の場合、実際に要素を2回右に回転させることになります。

  3. 配列の要素を回転させるために、スライスを使用します。スライスを使うことで、回転させたい要素を配列の末尾に移動させることができます。具体的には、配列の末尾から回転回数分の要素を取得し、それを配列の先頭に追加します。

  4. クエリのインデックスに対応する要素を返します。

以下は、上記の手順を実装したJavaScriptのコード例です。

function circularArrayRotation(arr, rotations, queries) {
  const actualRotations = rotations % arr.length;
  const rotatedArray = arr.slice(-actualRotations).concat(arr.slice(0, -actualRotations));
  const results = queries.map(index => rotatedArray[index]);
  return results;
}
// 使用例
const arr = [1, 2, 3, 4, 5];
const rotations = 2;
const queries = [0, 2, 4];
const result = circularArrayRotation(arr, rotations, queries);
console.log(result); // [4, 1, 3]

このコードでは、circularArrayRotationという関数を定義し、与えられた配列 arr を回転させ、指定されたクエリのインデックスに対応する要素を返しています。上記の使用例では、配列 [1, 2, 3, 4, 5] を2回右に回転させ、インデックス 024 の要素を取得しています。