旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
示例 1:
1 | 输入: [1,2,3,4,5,6,7] 和 k = 3 |
示例 2:
1 | 输入: [-1,-100,3,99] 和 k = 2 |
说明:
- 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
- 要求使用空间复杂度为 O(1) 的原地算法。
思路:k控制循环次数,每次内层循环第1到第n个元素分别和它相邻的下一个元素交换位置,从后往前交换可以防止值被覆盖,java代码如下:
1 | class Solution { |
还有一种方法,借助ArrayList来裁剪数组,代码如下;
1 | class Solution { |