【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]
相关推荐
Tisfy1 小时前
LeetCode 3379.转换数组:下标取模
算法·leetcode·题解·模拟·取模
Web打印1 小时前
Phpask(php集成环境)之01安装Apache
开发语言·php·apache
Zachery Pole1 小时前
JAVA_07_面向对象
java·开发语言
dc_00122 小时前
Java进阶——IO 流
java·开发语言·python
沐知全栈开发2 小时前
DOM 遍历
开发语言
桂花很香,旭很美2 小时前
[7天实战入门Go语言后端] Day 3:项目结构与配置——目录组织、环境变量与 viper
开发语言·数据库·golang
Lun3866buzha2 小时前
内窥镜设备部件检测与识别——基于Mask R-CNN的改进模型训练与实现
开发语言·r语言·cnn
骇城迷影2 小时前
代码随想录:数组篇
算法·leetcode
Never_Satisfied2 小时前
在JavaScript中,如何给字符串数组中的元素去重
开发语言·javascript·ecmascript