在 Python 中旋转数组
假设我们有一个数组 A。我们需要将其向右旋转 k 步。因此,如果数组为 A = [5, 7, 3, 6, 8, 1, 5, 4],k = 3,则输出将为 [1,5,4,5,7,3,6,8]。步骤如下
- [4,5,7,3,6,8,1,5]
- [5,4,5,7,3,6,8,1]
- [1,5,4,5,7,3,6,8]
为了解决此问题,我们将按照以下步骤进行操作。
- 令 n 为数组的大小
- k = k 模 n
- A = A 中从 n - k 到末尾的子数组 + A 中从 0 到 n - k - 1 的子数组
为了更好地理解,让我们看以下实现 -
示例
class Solution(object): def rotate(self, nums, k): """ :type nums: List[int] :type k: int :rtype: None Do not return anything, modify nums in-place instead. """ n = len(nums) k%=n nums[:] = nums[n-k:]+nums[:n-k] nums = [5,7,3,6,8,1,5,4] ob1 = Solution() ob1.rotate(nums, 3) print(nums)
输入
nums = [5,7,3,6,8,1,5,4] k = 3
输出
[1,5,4,5,7,3,6,8]
广告