LeetCode经典150题Golang版.189. 轮转数组

题目

189. 轮转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

示例 2:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

提示:

  • 1 <= nums.length <= 105
  • -231 <= nums[i] <= 231 - 1
  • 0 <= k <= 105

进阶:

  • 尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
  • 你可以使用空间复杂度为 O(1)原地 算法解决这个问题吗?

思路与代码

方法一:使用额外的数组

func rotate(nums []int, k int) {newNums := make([]int, len(nums))for i, v := range nums {newNums[(i+k)%len(nums)] = v}copy(nums, newNums)
}

方法二:数组翻转

思路
先翻转原始数组,再翻转[0,k mod n−1] 区间的元素,最后翻转 [k  mod  n,n−1] 区间的元素。

操作结果
原始数组1 2 3 4 5 6 7
翻转所有元素7 6 5 4 3 2 1
翻转[0,k mod n−1] 区间的元素5 6 7 4 3 2 1
翻转 [k  mod  n,n−1] 区间的元素5 6 7 1 2 3 4

代码

package mainimport "fmt"func reverse(a []int) {for i, n := 0, len(a); i < n/2; i++ {a[i], a[n-1-i] = a[n-1-i], a[i]}
}func rotate(nums []int, k int) {k = k % len(nums)reverse(nums)reverse(nums[:k])reverse(nums[k:])
}func main() {nums := []int{1, 2, 3, 4, 5, 6, 7}rotate(nums, 3)fmt.Println(nums)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker consul 容器的自动发现与注册

consul相关知识 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff0c;起初的…

团体程序设计天梯赛练习集(L1-016-L1-025)

L1-016 查验身份证 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c;…

kafka配置多个消费者groupid kafka多个消费者消费同一个partition(java)

目录 1- 单播模式&#xff0c;只有一个消费者组2- 广播模式&#xff0c;多个消费者组3- Java实践 kafka是由Apache软件基金会开发的一个开源流处理平台。kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 kafka中partition…

Git忽略已经提交的文件

原理类似于 Android修改submodule的lib包名

一文搞懂OSI参考模型与TCP/IP

OSI参考模型与TCP/IP 1. OSI参考模型1.1 概念1.2 数据传输过程 2. TCP/IP2.1 概念2.2 数据传输过程 3. 对应关系4. 例子4.1 发送数据包4.2 传输数据包4.3 接收数据包 1. OSI参考模型 1.1 概念 OSI模型&#xff08;Open System Interconnection Reference Model&#xff09;&a…

linux 常用脚本搜集(nginx) —— 筑梦之路

作为搜集之用 nginx acc日志分析 #!/bin/bash # 日志格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" LOG_FILE$1 echo "…

MySQL,分组order by

一、创建分组 ## 创建分组 -- 返回每个发布会的参会人数 SELECT event_id,COUNT(*) as canjia_num FROM sign_guest GROUP BY event_id; 1、group by子句可以包含任意个列&#xff0c;但是但指定的所有列都是一起计算的。 group by 后2个字段一起计算的 2、group by后面可以跟…

Leetcode 剑指 Offer II 057. 存在重复元素 III

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两…

STM32-HAL库11-SPI通讯(F103C6T6做主机,F103C8T6做从机)

STM32-HAL库11-SPI通讯&#xff08;F103C6T6做主机&#xff0c;F103C8T6做从机&#xff09; 一、所用材料 STM32F103C6T6最小系统板-主机 STM32F103C8T6最小系统板-从机 串口调试助手X-COM 二、所学内容 主要为实现SPI的轮询发送功能&#xff0c;在DSP280049C初学&#xff…

Logistic Regression——逻辑回归

1. 为什么需要逻辑回归 在前面学习的线性回归中&#xff0c;我们的预测值都是任意的连续值&#xff0c;例如预测房价。除此之外&#xff0c;还有一个常见的问题就是分类问题&#xff0c;而逻辑回归是一个解决分类问题的模型&#xff0c;其预测值是离散的。 分类问题又包括…

30天精通Nodejs--第十四天:MongoDB

这里写目录标题 前言什么是 MongoDB?安装 MongoDB 驱动连接到 MongoDB 数据库执行基本操作插入文档查询文档更新文档删除文档使用 Mongoose总结前言 MongoDB 是一款流行的 NoSQL 数据库,为 Node.js 开发者提供了灵活性和可伸缩性。本文将详细介绍在 Node.js 中使用 MongoDB的…

JdbcTemplate能否开启事务?使用Statement手动开启事务

一、需求背景 项目中经常会去对接第三方的数据&#xff0c;将对方的用户组织等信息同步过来&#xff0c;此时会遇到几个问题就是数据量大的时候性能问题&#xff0c;数据部分更新时又该怎么同步&#xff0c;但这些数据基本都有状态和更新时间&#xff0c;根据该两个值去新增和…

如何安装LUT预设?达芬奇/FCP/PR怎么安装LUT预设.cube格式文件的教程

在下载的LUT调色预设压缩文件包中&#xff0c;通常两个包含不同格式的LUT文件&#xff1a; .cube 和 .xmp 包含的 .cube 文件几乎与主流的视频编辑和色彩校正软件兼容&#xff0c;并且还可以在 Adobe Photoshop 等一些照片应用程序中使用。如果主要是将这些 LUT 用于视频剪辑项…

如何搭建Gateway服务

Gateway的简单介绍 Spring Cloud Gateway是Spring Cloud的一个项目&#xff0c;该项目是基于Spring&#xff0c;Spring Boot和Project Reactor等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。Gateway网关可以是…

生信算法1 - DNA测序算法实践之序列操作

生信序列基本操作算法 建议在Jupyter实践&#xff0c;python版本3.9 1. 定义DNA序列 seq ACGT# 从序列指定索引的碱基 seq[1] # C# 序列长度 len(seq) # 42. 序列拼接 # 序列拼接 - 字符串 seq1 AACC seq2 GGTT print(seq1 seq2) # AACCGGTT# 序列拼接 - 列表 seqs [A…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用

目录 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 2.优化共享库代码 二、问题 1.Jenkins手动构建后端项目流水线报错 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 &#xff08;1&#xff09;GitLa…

使用Redis构建简单的社交网站

文章目录 第1关&#xff1a;创建用户与动态第2关&#xff1a;处理用户关系第3关&#xff1a;状态与信息流 第1关&#xff1a;创建用户与动态 编程要求 在Begin-End区域编写 create_user(login_name, real_name) 函数&#xff0c;实现创建新用户的功能&#xff0c;具体参数与要…

Rust语言第一篇:我是谁?

Rust 是一种系统级编程语言&#xff0c;专注于安全性、并发性和性能。它由 Mozilla 开发并于 2010 年首次发布。Rust 被设计为一种可靠和高效的编程语言&#xff0c;可用于构建各种类型的软件&#xff0c;从操作系统和嵌入式设备到 Web 应用程序和桌面应用程序。 以下是 Rust …

java.lang.UnsupportedOperationException: null

目的&#xff1a;想使用add()在list集合中加入数据 原因&#xff1a;Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法&#xff0c;直接使用会抛异常 String str "1,2,3,5" String[] ids str.split(","); List<String> list Array…

假如董宇辉是个AI

董宇辉这么质朴、勤奋、爱动感情又有灵气的带货主播&#xff0c;配得上他的上千万粉丝。他是直播带货的一股清流&#xff0c;罕见的品类和物种。 然而&#xff0c;是东方甄选成就了董宇辉&#xff0c;还是董宇辉托起了东方甄选&#xff0c;真是笔说不清的糊涂账。董宇辉为什么…