题解 | 旋转数组

旋转数组

https://www.nowcoder.com/practice/e19927a8fd5d477794dac67096862042

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 旋转数组
# @param n int整型 数组长度
# @param m int整型 右移距离
# @param a int整型一维数组 给定数组
# @return int整型一维数组
#
from typing import List


class Solution:
    def solve(self, n: int, m: int, a: List[int]) -> List[int]:
        # 处理m可能大于n的情况
        m = m % n

        if m == 0:
            return a

        # 三次反转法 - 空间O(1),时间O(n)
        # 1. 反转整个数组
        a.reverse()  # Python内置反转

        # 2. 反转前m个
        a[:m] = reversed(a[:m])

        # 3. 反转剩下的
        a[m:] = reversed(a[m:])

        return a

三反转真遇上了,反而在机考上不能用,能感觉到重复率一片一片的

全部评论

相关推荐

01-03 19:22
宁夏大学 运营
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:04
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务