難度系數:☆☆☆
返回將一組數組向右旋轉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
C++
http://sharesvip.com/code/4.html
相關推薦
'京東算法工程師分享—最全面的算法和數據結構知識(附帶學習資料'
"數據結構鏈表鏈表是一種由節點(Node)組成的線性數據集合,每個節點通過指針指向下一個節點。它是一種由節點組成,並能用於表示序列的數據結構。單鏈表:每個節點僅指向下一個節點,最後一個節點指向空(null)。雙鏈表:每個節點有兩個指針p,n。p指向前一個節點,n指向下一個節...
'面試季馬上就要到了,數據結構和算法你都掌握了嗎'
"什麼是數據結構?簡單說,數據結構就是一個容器,以某種特定的佈局存儲數據。這個“佈局”使得數據結構在某些操作上非常高效,在另一些操作上則不那麼高效。你的目標就是理解數據結構,這樣就能為手頭的問題選擇最優的數據結構。為什麼我們需要數據結構?由於數據結構用來以有組織的形式存儲數...
'學好這13種數據結構,應對各種編程語言(C++版)'
"學了這麼長時間數據結構和算法,有必要來個總結了,順便回顧一下我們這段時間的學習成果。以 C++ 語言本身提供的數據結構為例。如果能掌握這 13 種數據結構,相信在學習其它語言的時候就不費勁了。數組 Array數組在初始化的時候就需要知道其大小,後續是不可以改變其大小的,可...
'阿里算法工程!史上最全面的算法和數據結構知識'
"鏈表鏈表是一種由節點(Node)組成的線性數據集合,每個節點通過指針指向下一個節點。它是一種由節點組成,並能用於表示序列的數據結構。單鏈表:每個節點僅指向下一個節點,最後一個節點指向空(null)。雙鏈表:每個節點有兩個指針p,n。p指向前一個節點,n指向下一個節點;最後...
'阿里算法工程分享!史上最全面的算法和數據結構知識'
"鏈表鏈表是一種由節點(Node)組成的線性數據集合,每個節點通過指針指向下一個節點。它是一種由節點組成,並能用於表示序列的數據結構。單鏈表:每個節點僅指向下一個節點,最後一個節點指向空(null)。雙鏈表:每個節點有兩個指針p,n。p指向前一個節點,n指向下一個節點;最後...
'「數據結構」線段樹(Segment Tree)'
"假設我們現在拿到了一個非常大的數組,對於這個數組裡面的數字要反覆不斷地做兩個操作。1、(query)隨機在這個數組中選一個區間,求出這個區間所有數的和。2、(update)不斷地隨機修改這個數組中的某一個值。時間複雜度:枚舉:枚舉L~R的每個數並累加。query:O(n)...
'GitHub Python項目推薦|數據結構和算法必知必會的50個代碼實現'
"GitHub Python項目推薦|數據結構和算法必知必會的50個代碼實現項目熱度標星(star):8860關注(watch):486拷貝(fork):2644貢獻人數:98 (貢獻人數很多哈)倉庫大小:1 MB最後更新:2019-08-17代碼提交活躍:開發語言主要語言...
'阿里面試官:HashMap數據結構之道'
"問題1:HashMap的數據結構是什麼樣的?同學1:嗯...數組+鏈表同學2:數組+鏈表...同學3:數組+鏈表...同學4:數組+鏈表+紅黑樹...同學n:..... 為什麼答案會有兩種?難道大家學習的HashMap有兩個版本?我突然想起馬克思哲學裡面的一句話,真理是相...
'JS從入門到不放棄(二)深入理解數組其它特性'
"歡迎來到我的JS從入門到放棄專題系列文章,更多精彩內容持續更新中,歡迎關注 :)上一章節我們說到了JS數組的基礎特性和它的高級用法。這一小節我們繼續深入,一起探討數組這種數據結構在真實項目中的實戰。本章目標數組的reduce方法如何判斷一個對象是的類型是否為數組數組索引的...
'騰訊算法工程師分享—最全面的算法和數據結構知識(附帶學習資料'
"數據結構鏈表鏈表是一種由節點(Node)組成的線性數據集合,每個節點通過指針指向下一個節點。它是一種由節點組成,並能用於表示序列的數據結構。單鏈表:每個節點僅指向下一個節點,最後一個節點指向空(null)。雙鏈表:每個節點有兩個指針p,n。p指向前一個節點,n指向下一個節...
'Java教程之Java數據結構的學習方法分享'
"Java數據結構是所有Java開發工程師在日常工作中不可缺少的,尤其是我們在處理數據中經常會用到數據結構,這麼重要的知識點很多初學者在學習Java數據結構時不知道該如何學習?下面千鋒武漢Java培訓小編就為大家分享Java數據結構學習方法。Java的工具包提供了非常強大的...
推薦中...