美文网首页
189。 数组旋转(空间复杂度O(1),原地算法)

189。 数组旋转(空间复杂度O(1),原地算法)

作者: 不忘初心_悟空 | 来源:发表于2020-09-18 15:06 被阅读0次

    给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

    示例 1:

    输入: [1,2,3,4,5,6,7] 和 k = 3
    输出: [5,6,7,1,2,3,4]
    解释:
    向右旋转 1 步: [7,1,2,3,4,5,6]
    向右旋转 2 步: [6,7,1,2,3,4,5]
    向右旋转 3 步: [5,6,7,1,2,3,4]

    class Solution:
        def rotate(self, nums: List[int], k: int) -> None:
                    n = len(nums)
                    k%=n
                    while (l<r):
                            nums[l], nums[r] = nums[r], nums[l]
                    swap(0, n-k-1)                        #    [4,3,2,1,5,6,7]
                    swap(n-k, n-1)                        #    [4,3,2,1,7,6,5]
                    swap(0, n-k)                           #    [5,6,7,1,2,3,4]
    

    相关文章

      网友评论

          本文标题:189。 数组旋转(空间复杂度O(1),原地算法)

          本文链接:https://www.haomeiwen.com/subject/tzdjyktx.html