题解 | 旋转数组

旋转数组

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

题解中的b和c还是使用了新的数组。

可以写一个新办法一个一个换。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 旋转数组
# @param n int整型 数组长度
# @param m int整型 右移距离
# @param a int整型一维数组 给定数组
# @return int整型一维数组
#
class Solution:
    def solve(self, n: int, m: int, a: List[int]) -> List[int]:
        # 取模操作,确保 m 在数组长度范围内
        m = m % n

        def reverse(arr, start, end):
            while start < end:
                arr[start], arr[end] = arr[end], arr[start]
                start += 1
                end -= 1

        # 反转整个数组
        reverse(a, 0, n - 1)
        # 反转前 m 个元素
        reverse(a, 0, m - 1)
        # 反转剩余的 n - m 个元素
        reverse(a, m, n - 1)

        return a

全部评论

相关推荐

05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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