【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]
相关推荐
来让爷抱一个18 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
Dream it possible!20 小时前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
心抵鹊21 小时前
算法之双指针系列(一)
算法·leetcode
心祭丫丫21 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
露天赏雪1 天前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
Pniubi1 天前
力扣560.和为k的子数组
算法·leetcode·职场和发展
Pniubi1 天前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展
yeccheng1 天前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀1 天前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
zjxtxdy1 天前
C++面向对象程序开发-类与对象
开发语言·c++