數據結構——數組旋轉

數據結構 計算複雜性理論 Java 技術 敲代碼的草泥 2017-06-02

難度系數:☆☆☆

返回將一組數組向右旋轉k個位置的結果。比如,一維數組{1,2,3,4,5},k=2時,返回結果是{4,5,1,2,3}。要求常數級空間複雜度,允許修改原有數組。


觀察

如果允許額外分配線性空間,那麼可以錯位複製原有數組的元素。如果允許修改原有數組,那麼我們可以通過三次反轉數組來實現數組旋轉,不需要申請額外空間,並且每次反轉時間為O(n),從而實現線性的時間複雜度和常數級的空間複雜度。

三次反轉數組:第一次反轉整個數組;第二次反轉數組的前k個數;第三次反轉數組剩下的數。例如,

一維數組{1,2,3,4,5},k=2

第一次反轉:5,4,3,2,1

第二次反轉:4,5,3,2,1

第三次反轉:4,5,1,2,3 即為最終結果。


JAVA

數據結構——數組旋轉

數組旋轉——JAVA

C++

http://sharesvip.com/code/4.html

相關推薦

推薦中...