问题描述
有一个长度为m的数组a,循环左移或右移n为
算法
三次逆置法
1 若循环左移,则将左边长度为n的子数组和右边剩下的子数组分别逆置
2 若循环右移,则将右边长度为n的子数组和左边剩下的子数组分别逆置
3 再将整个数组分别逆置
复杂度
时间o(n)
空间o(1)
算法演示
数组:123456789
循环左移3位
逆置1:321456789
逆置2:321987654
逆置3:456789123
有一个长度为m的数组a,循环左移或右移n为
三次逆置法
1 若循环左移,则将左边长度为n的子数组和右边剩下的子数组分别逆置
2 若循环右移,则将右边长度为n的子数组和左边剩下的子数组分别逆置
3 再将整个数组分别逆置
时间o(n)
空间o(1)
数组:123456789
循环左移3位
逆置1:321456789
逆置2:321987654
逆置3:456789123