给定一个长度为偶数的数组arr,假设长度为N*2,左部分:arr[L1……Ln],右部分:arr[R1……Rn],请把arr调整成arr[L1,R1,L2,R2,L3,R3,…,Ln,Rn]。...要求:时间复杂度O(N),额外空间复杂度O(1)。
福大大 答案2021-08-03:
这道题用自然智慧,很难想到。
i从1开始。下标循环怼。
3的k次方-1。1,3,9……是环的其中一个位置。...return 2 * i
} else {
return 2*(i-(len2/2)) - 1
}
}
// 数组的长度为len,调整前的位置是i,返回调整之后的位置...// 旋转完成后,从L开始算起,长度为base-1的部分进行下标连续推
cycles(arr, L, base-1, k)
// 解决了前base-1的部分,剩下的部分继续处理...为左部分,[M+1..R]为右部分,左右两部分互换
func rotate(arr []int, L int, M int, R int) {
reverse(arr, L, M)
reverse