摘要:
设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。 不合题意的解法如下: 我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234--->4abcd123--->34abcd12--->234abcd1--->1234abcd。代码如下所示:[cpp]view plaincopyRightShift(int*arr,intN,intK){while(K--){intt=arr[N-1];for(inti=N-1;i>0;i--){arr[i]=arr[i-1];}arr[0]=t;}} 阅读全文