轮转数组-leetcode

news/2025/9/18 20:01:52/文章来源:https://www.cnblogs.com/foxt/p/19099582

题目描述

给定一个整数数组 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)原地 算法解决这个问题吗?

解法一

思路:

环形替换,防止前面的数字覆盖,从后向前循环,循环开头的时候,开头元素已经被更改了,所以我们采用一个数组记录原始开头的几个数,然后再对这几个数字填充到正确的地方。

代码:

class Solution {public void rotate(int[] nums, int k) {int numsLen=nums.length;if(numsLen==1) return;int tempLen=k%nums.length;int[] temp=new int[tempLen];for(int i=0;i<tempLen;i++){temp[i]=nums[i];}for(int i=numsLen-1;i>=tempLen;i--){nums[(i+tempLen)%numsLen]=nums[i];}int cnt=0;for(int i=tempLen;i<2*tempLen;i++){nums[i%numsLen]=temp[cnt++];}}
}

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

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

相关文章

CF1864G Magic Square

题面:(粘自洛谷) CF1864G Magic Square 题目描述 Aquamoon 有一个魔方,可以看作一个 \(n \times n\) 矩阵,矩阵的元素构成数字的排列 $1, \ldots, n^2 $ 。 Aquamoon 可以对矩阵执行两种操作:行移位,即将矩阵的整…

endsWith() 字符串部子串判断函数

endsWith() 字符串部子串判断函数前言endsWith()是Jmeter Java脚本组件中一个很好用的判断字符串尾串的函数。但,就是这么简单的函数,还是没能避免 一看就会,一练就废的陷阱。 踩坑之 一看就会,一练就废的endsWith…

OI TRICKS

位运算 每一位是独立的,可以拆开处理 \(a, b \in \{0, 1\}\),则xor and or\(a \oplus 1 = 1- a\) \(a \ \text{and} \ 0 = 0\) \(a \ \text{or} \ 1 = 1\)\(a \oplus 0 = a\) \(a \ \text{and} \ 1 = a\) \(a \ \…

深入解析:Okular开源免费的跨平台文档查看神器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

day37大模型程序开发-GraphRAG理论

RAG基本回顾实现流程准备原始的知识库(一个一个的文件组成) 将知识库文件内容进行读取(完整的字符串) 分块处理(新知识库:一段一段的文本字符串组成) 向量转换:将每一段文本chunk转换成向量(向量模型) 将向量…

AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人

AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人AI Compass前沿速览: AI-Compass 致力于构建最全面、最实用、最前沿的AI技术学习和实践生态,通过六大核心模块…

day3536大模型应用开发-模型微调框架

为什么需要微调? 在开始学习微调之前,大家首先还是要搞清楚为什么要微调?在什么情况下需要微调?让模型更懂“专业话”:通用模型就像一个“万事通”,它学过很多东西,但对一些特别专业的领域(比如医学、法律、金…

day12-Trae之一键换脸APP开发02

今日内容 1 Trae配置 # 1 之前就装过python解释器和JDK了 # 2 如果你电脑上没有任何编辑器,使用txt写代码,都可以可以运行pyton或java的项目# 3 IDE只是个快速写代码的软件,如果没装python解释器和JDK---》代码运行…

day35大模型应用开发-模型微调

为什么需要微调? 在开始学习微调之前,大家首先还是要搞清楚为什么要微调?在什么情况下需要微调?让模型更懂“专业话”:通用模型就像一个“万事通”,它学过很多东西,但对一些特别专业的领域(比如医学、法律、金…

Rust多线程:Worker 结构体与线程池中任务的传递机制

本文分享自天翼云开发者社区《Rust多线程:Worker 结构体与线程池中任务的传递机制》,作者:l****n Rust多线程:Worker 结构体与线程池中任务的传递机制 **在实现一个多线程的 Web 服务器时,我们会遇到一个问题:如…

day10-AI短视频01

今日内容 1 AI 短视频介绍 1.1 AI短视频是什么 # 1 AI 短视频是指通过人工智能技术(尤其是生成式 AI、智能剪辑算法等)自动或辅助完成制作的短视频内容,其核心是利用 AI 工具替代或简化传统短视频创作中 “内容生成…

详细介绍:今日分享 KMP算法

详细介绍:今日分享 KMP算法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

【每日算法】两数相加 LeetCode - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

04-简单查询

04-简单查询$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");查询单个字段 案例1:查询公司中所有员工编号案例2:查询公司中所有员工姓名查多个字段 案例1:…

MSS 到底是什么?Wireshark 分析TCP过程 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

线性回归与 Softmax 回归核心内容总结 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P6631 [ZJOI2020] 序列 题解

很好的贪心题。 考虑从左到右枚举每个位置,每次在右边添加一个数时更行答案。 容易想到记录当前前缀可以继续向右延伸的 \(1,2,3\) 操作的个数。记当前需要添加的数为 \(i\),用 \(c,x,y\) 分别表示可以继续向右延伸(…

MacCAD2019.dmg 安装包使用教程|Mac电脑安装CAD2019全流程

MacCAD2019.dmg 安装包使用教程|Mac电脑安装CAD2019全流程​一、准备工作​下载文件​ 确保你已经下载了 MacCAD2019.dmg这个安装包,一般是个压缩镜像文件。安装包下载:https://pan.quark.cn/s/3efc4d51839c二、开始…

初始化一个rust环境

初始化一个rust环境初始化一个rust环境 rust 安装工具依赖入门 - Rust 程序设计语言一门帮助每个人构建可靠且高效软件的语言。 https://www.rust-lang.org/zh-CN/learn/get-startedrustup 环境变量 RUSTUP_DIST_SERVE…

编程里边有好多不容易触及的知识点

可能是因为不是原生土长的内容,编程里边有很多没有办法合情理解的领域。框架是其中一个,类似的还有 窗口库,还有好多其它东西。以前刚开始学窗口的时候,总是觉得没办法进行。周围的同学大概都是 拿过来用就可以,创…