題目:

官網題目連結

根據題目敘述,輸入整數陣列 A 和一個整數 K ,將每個陣列元素往右移 K 次。
例如輸入 A=[3, 8, 9, 7, 6], K=3,答案應為 [9, 7, 6, 3, 8]。

  • N 和 K 都是範圍 [0~100] 的整數。
  • 陣列 A 的每個元素都是 [−1000~1000] 範圍內的整數。

題目特別說專注在正確性而不是效能。

解法:

共做 K 次,每次將陣列的最後一個元素改放到最前面即可。

由於 php array 的特性,用 array_pop() 取出最後一個元素為時間複雜度 O(1),
但使用 array_unshift() 將元素放到最前面時,需要時間複雜度 O(N) 來保持索引順序,其中 N 為陣列元素數量。
可以複習一下我的另一篇文章 : PHP Array

  • 時間複雜度 O(N * K)
  • 空間複雜度 O(N) / O(N * K) – 我不確定重複的 array_unshift() 會不會用到相同的空間來搬移陣列,之後可以實驗

PHP 程式碼: