数组旋转的反转算法
给定一个大小为N的数组 arr[],任务是将数组向左旋转d 个位置。...使用复杂算法。
另一种方法(反转算法):
这里我们将讨论另一种方法,该方法使用反转数组的一部分的概念。这个想法背后的直觉如下:
如果我们仔细观察,我们可以看到一组数组元素正在改变其位置。...例如,以下数组:
arr[] = {1, 2, 3, 4, 5, 6, 7}和 d = 2 。
旋转后的数组为 {3, 4, 5, 6, 7, 1, 2}
具有前两个元素的组正在移动到数组的末尾。...旋转后,具有前 5 个元素{7, 6, 5, 4, 3}和后 2 个元素{2, 1} 的块中的元素应按初始数组的实际顺序 [即,{3, 4, 5, 6, 7} 和 {1, 2} ]但这里情况相反。 ...,1,N);
插图:
请按照下图更好地理解算法:
例如,采用数组arr[] = {1, 2, 3, 4, 5, 6, 7}和d = 2。