Codility Lesson CyclicRotation
題目:
根據題目敘述,輸入整數陣列 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 程式碼:
如果您喜歡我的文章,歡迎幫我在下面按5下讚!感謝您的鼓勵和支持!
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment