璁捐涓涓畻娉曪紝鎶婁竴涓惈鏈?em>N涓厓绱犵殑鏁扮粍寰幆鍙崇ЩK浣嶏紝瑕佹眰鏃墮棿澶嶆潅搴︿負(fù)O錛?em>N錛夛紝涓斿彧鍏佽浣跨敤涓や釜闄勫姞鍙橀噺銆?br>
棣栧厛鎴戜滑鏉ョ湅涓嬭В娉曚竴錛屼竴鑸漢閮戒細(xì)鎯沖埌鐨?
void rightShift(int* arr,int n,int k)
{
k%=n;
while(k--){
int t=arr[n-1];
for(int i=n-1;i>0;i--)
arr[i]=arr[i-1];
arr[0]=t;
}
}
澶嶆潅搴︿負(fù)O(k*N)錛?<k<N鏈夌偣涓嶇鍚堣姹傚搱鍝堛傘傘?br>
瑙f硶浜岋細(xì)鎴戜滑鏉ヤ婦涓緥瀛愮湅鐪嬫竻妤氬晩
姣斿12345abcde錛屽悜鍙崇Щ4涓綅緗紝鍒欑Щ鍔ㄥ悗鍙樹負(fù)bcde12345a,鎴戜滑鐪嬪嚭bcde鍜?2345a欏哄簭閮戒繚瀛樹笉鍙橈紝
鎵錛屾垜浠彲浠ヨ繖鏍峰鐞嗗晩銆傘傘?br> 錛?錛?2345a 鍙嶈漿 a54321
(2) bcde鍙嶈漿 edcb 姝ゆ椂鏁扮粍 a54321edcb
錛?錛夊搱鍝堛傘傜湅鍑烘潵浜嗗惂銆傘傚啀鍙嶈漿 bcde12345a
澶嶆潅搴﹀灝戝憿O(N)
void reverse(int*arr,int begin,int end)
{
for(;begin<end;begin++,end--)
{
int temp=arr[begin];
arr[begin]=arr[end];
arr[end]=temp;
}
}
void rightShift(int* arr,int k,int n)
{
k%=n;
reverse(arr,0,n-k-1);
reverse(arr,n-k,n-1);
reverse(arr,0,n-1);
}

]]>