旋转后,具有前 5 个元素{7, 6, 5, 4, 3}和后 2 个元素{2, 1} 的块中的元素应按初始数组的实际顺序 [即,{3, 4, 5, 6, 7} 和 {1, 2} ]但这里情况相反。 ...因此,如果再次反转这些块,我们就会得到所需的旋转数组。
所以操作顺序是:
反转整个数组
然后反转最后一个“d”元素并
然后反转第一个(Nd)元素。...当我们执行反向操作时,它也类似于以下顺序:
反转第一个 'd' 元素
反转最后 (Nd) 元素
反转整个数组。...就变成如下图所示:
反转最后 (NK) 个元素
第四步:现在数组与左移d次后的数组完全相反。因此,反转整个数组,您将得到所需的旋转数组。...2
printArray(arr)
输出
3 4 5 6 7 1 2
时间复杂度: O(N)
辅助空间: O(1)
另一种方法:
使用 C++ STL 逆向
Python 代码
#将数组向右旋转k个元素的函数