《程式設計之美》讀書筆記(九) 陣列迴圈位移

2022-02-25 08:31:43 字數 492 閱讀 4895

2.17「陣列迴圈位移」

題目:設計乙個演算法,把乙個含有n個元素的陣列迴圈右移k位,要求時間複雜度為o(n),且只允許使用兩個附加變數。

網友azuryy提出了自己的解題思路,

部落格原文:

這個問題,我在面試中也問過,幾乎所有的candidates都能給出解法一,至於解法二,並沒有新意,讀過stl源**的人都知道:

stl裡面的rotate函式,就是用這種方法實現的

templateinline

void _rotate(_bidit _first, _bidit _mid, _bidit _last,   bidirectional_iterator_tag)

但是,stl只是在乙個陣列裡面移位,所移動的長度不會超過陣列的大小。如果乙個長度是3的陣列迴圈右移1000000位,也就是 k >> n的時候

rightshift(int* arr, int n, int k)

k %= n ; //很簡單但是不同反響的一句

《程式設計之美》讀書筆記

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...

《程式設計之美》讀書筆記集錦

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...

《程式設計之美》讀書筆記集錦

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...