LeetCode-轮转数组的三种方法(189)

题目描述:

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
在这里插入图片描述
思路一: 建立一个两倍原数组长度的数组,然后其中保存两遍原数组中的元素,轮转的过程就可以看成是在这个新数组中截取一个原数组长度的数组的过程,具体点说就是根据轮转关系从新数组中截取旧数组长度个数的元素并将这些元素保存到旧数组中。
思路二: 写一个逆置数组元素的函数来辅助轮转,首先整个数组进行逆置,然后前后两部分进行逆置,当然这里的前后两部分是根据轮转的个数k来划分的。
思路三: 直接写一个双循环,外层循环次数为轮转个数,内层循环每次将数组元素统一向后移一位,在这之前数组最后一个元素已被变量保存,在这之后将此变量的值赋给数组第一个空间,这样一次轮转就已完成,按此完成外循环次数即可。但是这个写法不能通过,因为当数组长度过长时会超出时间限制。
三种思路具体看代码:

class Solution {public void rotate(int[] nums, int k) {//rotate1(nums,k);//rotate2(nums,k);rotate3(nums,k);}public void rotate1(int[] nums,int k) {int[] temp=new int[2*nums.length];for(int i=0;i<nums.length;i++) {temp[i]=nums[i];}for(int i=0;i<nums.length;i++) {temp[i+nums.length]=nums[i];}for(int i=0;i<nums.length;i++) {nums[i]=temp[i+nums.length-k%nums.length];}}public void rotate2(int[] nums,int k) {reverse(nums,0,nums.length-1);reverse(nums,0,k%nums.length-1);reverse(nums,k%nums.length,nums.length-1);}public void reverse(int[] nums,int left,int right) {while(left<right) {int temp=nums[left];nums[left]=nums[right];nums[right]=temp;left++;right--;}}public void rotate3(int[] nums,int k) {for(int i=0;i<k%nums.length;i++) {int temp=nums[nums.length-1];for(int j=nums.length-2;j>=0;j--) {nums[j+1]=nums[j];}nums[0]=temp;}}
}

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

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

相关文章

云计算:OpenStack 分布式架构管理VXLAN网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.各节点新增网卡准备VXLAN网络 3.控制节点配置私有网络 4.计算节点1配置私有网络 5.计算节点2配置私有网络 6.重启服务 7.修改Dashboard 8.新建项目&#xff08;租户&#xff09;及用户 9.新建网络与子网 10.新建实例 11.新建路由 12.新增浮…

物联网的网络管理技术开发

物联网并不是新的事物。不论称为物联网或者是传感网&#xff0c;物联网的基本组成可以看成为传感器网络接入互联网构成,当然也有仅仅是传感器网络组成的简单的物联网系统。但是总的来说,物联网有许多新的特点。这些特点导致物联网对于其网络的管理有新的要求。因此电信网和互联…

算法与数据结构之数组(Java)

目录 1、数组的定义 2、线性结构与非线性结构 3、数组的表现形式 3.1 一维数组 3.2 多维数组 4、重要特性&#xff1a;随机访问 5、ArrayList和数组 6、堆内存和栈内存 7、数组的增删查改 7.1 插入数据 7.2 删除一个数据 7.3 修改数组 7.4 查找数据 8、总结 什么…

视频监控可视化云平台EasyCVR智能视频技术优势分析

TSINGSEE青犀视频安防视频管理系统EasyCVR视频智能融合共享平台&#xff0c;是一个支持Windows/Linux(CentOS ubuntu)/国产化系统的视频管理平台。平台可以支持多协议接入&#xff0c;通过视频应用引擎将多种格式的视频数据转换为统一的视频流数据&#xff0c;支持无插件H5直播…

RK3568平台 input输入子系统

一.input子系统简介 Input 子系统是管理输入的子系统&#xff0c; 和 pinctrl 和 gpio 子系统一样&#xff0c; 都是 Linux 内核针对某一类设备而创建的框架。 input 子系统处理输入事务&#xff0c; 任何输入设备的驱动程序都可以通过 input 输入子系统提供的接口注册到内核&…

Java虚拟机介绍

JVM是一种用于计算设备的规范&#xff0c;它是一个虚拟出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟计算机的各个功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。每个Java虚拟机都着一个清晰的任务&#x…

用通俗易懂的方式讲解大模型:在 CPU 服务器上部署 ChatGLM3-6B 模型

大语言模型&#xff08;LLM&#xff09;的量化技术可以大大降低 LLM 部署所需的计算资源&#xff0c;模型量化后可以将 LLM 的显存使用量降低数倍&#xff0c;甚至可以将 LLM 转换为完全无需显存的模型&#xff0c;这对于 LLM 的推广使用来说是非常有吸引力的。 本文将介绍如何…

Flume基础知识(三):Flume 实战监控端口数据官方案例

1. 监控端口数据官方案例 1&#xff09;案例需求&#xff1a; 使用 Flume 监听一个端口&#xff0c;收集该端口数据&#xff0c;并打印到控制台。 2&#xff09;需求分析&#xff1a; 3&#xff09;实现步骤&#xff1a; &#xff08;1&#xff09;安装 netcat 工具 sudo yum …

SVN服务端的下载、安装

地址 &#xff1a; Apache Subversion Binary Packages 下载 点击 VisualSVN 安装 都是点击 next 点击next &#xff0c;即可安装成功

SpringBoot学习(三)-员工管理系统开发(重在理解)

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! 本文是基于狂神老师SpringBoot教程中的员工管理系统从0到1的实践和理解。该系统应用SpringB…

B端产品经理学习-需求挖掘

B端产品需求挖掘 目录 识别和管理干系人 决策人和负责人需求挖掘 针对用户进行需求挖掘 用户访谈结果整理 B端产品的需求来源是非常复杂的&#xff0c;要考虑多个方面&#xff1b;如果你是一个通用性的产品&#xff0c;要考虑市场、自身优劣势、干系人。而定制型B端产品会…

uniapp:签字版、绘画板 插件l-signature

官方网站&#xff1a;LimeUi - 多端uniapp组件库 使用步骤&#xff1a; 1、首先从插件市场将代码下载到项目 海报画板 - DCloud 插件市场 2、下载后&#xff0c;在项目中的uni_modules目录 3、最后 没有其它步骤&#xff0c;直接官网代码复制到vue文件中就可以了&#xff0c…

综合跨平台全端ui自动化测试框架Airtest——AirtestIDE录制微信小程序脚本教学

前言 有在自动化测试领域的小伙伴应该都知道&#xff0c;app和小程序自动化这一类的自动化测试在实际操作中有时候很棘手让人心烦&#xff0c;动不动就是用appium写代码脚本维护什么的&#xff0c;不仅步骤繁琐&#xff0c;环境配置方面也是繁琐无比&#xff0c;动不动就与客户…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-1+2课程介绍+电路系统建模、基尔霍夫定律

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-12课程介绍电路系统建模、基尔霍夫定律 1. 课程介绍2. 电路系统建模、基尔霍夫定律 1. 课程介绍 2. 电路系统建模、基尔霍夫定律 基本元件&#xff1a; 电量 库伦&…

多模态——旷视大模型Vary更细粒度的视觉感知实现文档级OCR或图表理解

概述 现代大型视觉语言模型&#xff08;LVLMs&#xff09;&#xff0c;例如CLIP&#xff0c;使用一个共同的视觉词汇&#xff0c;以适应多样的视觉任务。然而&#xff0c;在处理一些需要更精细和密集视觉感知的特殊任务时&#xff0c;例如文档级OCR或图表理解&#xff0c;尤其…

前缀和算法 -- 寻找数组的中心坐标

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 输入描述 给定一个数组&#xff0c;接口为int pivotIndex(vector<int>& nums) 输出描述 我们以示例1为例画图解释&#xf…

DRF从入门到精通七(djangorestframework-simplejwt、定制返回格式、多方式登录)

文章目录 一、djangorestframework-simplejwt快速使用1.基础使用步骤2.自己配置视图校验访问局部配置认证及权限类全局配置认证及权限类 3.关于双token认证问题 二、定制返回格式三、多方式登录 一、djangorestframework-simplejwt快速使用 JWT主要用于签发登录接口需要配合认证…

频谱论文:约束飞行轨迹下基于生成对抗网络的三维无线电地图重构

#频谱# T. Hu, Y. Huang, J. Chen, Q. Wu and Z. Gong, "3D Radio Map Reconstruction Based on Generative Adversarial Networks Under Constrained Aircraft Trajectories," in IEEE Transactions on Vehicular Technology, vol. 72, no. 6, pp. 8250-8255, June …

Vue - 多行文本“展开、收起”功能

TextClamp 使用 js 实现文本展开、收起&#xff0c;并非纯 CSS 实现。 Props&#xff1a; fontSize&#xff1a;Number&#xff0c;默认&#xff1a;14lines&#xff1a;Number&#xff0c;默认&#xff1a;1lineHeight&#xff1a;Number&#xff0c;默认&#xff1a;20 F…

字符编码转换

宽窄字符和字符编码的关系 多字节(窄)字符&#xff1a;在C/C中&#xff0c;char是一种数据类型&#xff0c;规定sizeof(char)1&#xff0c;即一个char占用一个字节&#xff0c;1Byte8bit。并没有规定一个char就要与ASCII对应&#xff0c;不过&#xff0c;通常情况下char值与AS…