旋转数组
旋转数组
https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2skh7/
https://leetcode-cn.com/problems/rotate-array/
临时数组
最简单的方法,但是空间复杂为O(n)
。
环状替换
如果直接将每个数字放至它最后的位置,这样被放置位置的元素会被覆盖从而丢失。
解决方法:从位置 0 开始,将它放到正确的位置(向右 k 位),然后把被覆盖的元素保存下来,再将它放到正确的位置(再向右 k 位),循环往复。
容易发现,当回到初始位置 0 时,有些数字可能还没有遍历到(当 nums.length % k = 0 时,只会遍历偶数位置然后回到开头),此时应该跳到下一个位置然后继续。至于怎么判断该不该跳,我还不是很懂,详见题解。
数组翻转
1 |
|