在 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]

更新日期:2020 年 4 月 28 日

618 次浏览

开启你的 职业生涯

完成课程认证

开始
广告