【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]
相关推荐
smchaopiao10 小时前
Python中字典与列表合并的问题与解决方法
开发语言·python
敲代码的瓦龙11 小时前
Java?面向对象三大特性!!!
java·开发语言
2501_9216494911 小时前
期货 Tick 级数据与基金净值历史数据 API 接口详解
开发语言·后端·python·websocket·金融·区块链
野犬寒鸦11 小时前
Redis复习记录day1
服务器·开发语言·数据库·redis·缓存
小菜鸡桃蛋狗11 小时前
C++——类和对象(下)
开发语言·c++
骑龙赶鸭11 小时前
java开发项目中遇到的难点,面试!
java·开发语言·面试
张人玉11 小时前
C#通讯(上位机)常用知识点
开发语言·c#·通讯·上位机开发
NGC_661111 小时前
Java线程池七大核心参数介绍
java·开发语言
crescent_悦11 小时前
C++:Highest Price in Supply Chain
开发语言·c++