この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
25. 配列の順序を変える

空間複雑度がO(1)で解決する方法は、A配列内で要素の入れ替えを行うことです。具体的には、B[i]で指定された位置にある要素A[i]と、その要素が移動先となる位置にある要素A[B[i]]を交換します。この操作をB配列の全ての要素について行うことで、A配列の順序が変わります。

以下が実装例です。

const A = ['A', 'B', 'C', 'D', 'E', 'F']
const B = [1,   5,   4,   3,   2,   0]

for (let i = 0; i < A.length; i++) {
  // B[i]が現在の位置にある要素の移動先
  let j = B[i]
  
  // A[i]とA[j]を交換
  const tmp = A[i]
  A[i] = A[j]
  A[j] = tmp

  // Bの更新:A[j]が移動済みなので、移動先はiとなる
  B[j] = i
}

console.log(A) // ['F', 'A', 'E', 'D', 'C', 'B']

この実装では、A[i]とA[j]を交換するための一時的な変数tmpだけが追加的なメモリを必要とします。それ以外の領域使用量は入力サイズに依存しないため、空間複雑度がO(1)となります。