【双指针-中等】189. 轮转数组

本文介绍了一种有效的数组旋转算法——翻转法,并提供了详细的Python实现代码。该算法首先将整个数组进行一次翻转,然后分别翻转前k个元素和剩余部分,以此达到旋转的效果。适用于长度不超过10^5的数组,且每个元素值范围在-2^31到2^31-1之间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
提示:

1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105

【代码】
【方法1:翻转法】
在这里插入图片描述

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        k%=len(nums)
        def innerswap(N):
            sz=len(N)
            left,right=0,sz-1
            while left<right:
                N[left],N[right]=N[right],N[left]
                left+=1
                right-=1
            return N
        nums[:]=innerswap(nums)
        nums[:]=innerswap(nums[:k])+innerswap(nums[k:])
        return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值