【Golang】LeetCode 189. 轮转数组

189. 轮转数组

题目描述

思路

基于这道题目当中给出的样例,我们能够观察出实现"轮转数组"操作的规律,那就是首先对整个数组进行翻转,然后以k为界,分别翻转其之前和之后的子数组,得到的结果就是答案。

在 Golang 当中我们可以自己写一个对序列进行翻转的函数。

在 Python 当中我们可以基于序列本身的切片性质快速完成序列指定区间的翻转。

基于以上思路,我们写代码来解决问题。

Golang 题解

go 复制代码
func reverse(nums []int) []int {
    for i, j := 0, len(nums) - 1; i < j; i, j = i + 1, j - 1 {
        nums[i], nums[j] = nums[j], nums[i]
    }
    return nums
}

func rotate(nums []int, k int)  {
    k %= len(nums)
    reverse(nums)
    reverse(nums[0: k])
    reverse(nums[k:])
}

Python 题解

python 复制代码
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        k %= len(nums)
        nums[:] = nums[::-1]
        nums[0: k] = nums[0: k][::-1]
        nums[k:] = nums[k:][::-1]
相关推荐
xxie12379412 小时前
return与print
开发语言·python
秋912 小时前
从 Python 后端工程师转型 AI Engineer(AI 工程化)的完整补课清单(2026实战版)
开发语言·人工智能·python
程序员二叉13 小时前
【Java】 异常高频面试题精讲 | 易错点+对比总结
java·开发语言·面试
慕木沐13 小时前
Google ADK Java 1.0版本 核心机制与实战 Demo
java·开发语言·python
想吃火锅100514 小时前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展
Roann_seo%14 小时前
C++文件操作完全指南:从文本读写到二进制文件处理
开发语言·c++
huangdong_15 小时前
淘宝商品SKU图自动分类技术深度解析:从DOM解析到智能归档
开发语言·javascript·ecmascript
阿正的梦工坊15 小时前
【Rust】12-借用检查器与非词法生命周期
开发语言·后端·rust
小林ixn15 小时前
LeetCode 206. 反转链表(迭代 + 递归详解)
算法·leetcode·链表
qq_25183645715 小时前
基于java Web网络订餐系统设计与实现 源码文档
java·开发语言·前端