Leetcode刷题之轮转数组

Leetcode刷题之轮转数组

  • 一、题目描述
  • 二、题目解析
    • 方法一:三段逆置
      • 题目代码
    • 方法二:利用memcpy进行拷贝
      • 运行结果

一、题目描述

轮转数组
给定一个整数数组 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]
在这里插入图片描述

二、题目解析

本题目,我给大家介绍两种解决方法,解决方法如下:

方法一:三段逆置

①、先将前n-k个数据进行逆置,这里需要注意的是最后一个前n-k个元素的下标,应该是n-k-1.
在这里插入图片描述
②、第二步,将后k个数据再进行逆置操作。
在这里插入图片描述
第三步:整体对两部分进行逆置操作。
在这里插入图片描述

题目代码

//三段逆置
void resver(int *a,int left,int right)
{while(left<right){int tmp=a[left];a[left]=a[right];a[right]=tmp;left++;right--;}
}void rotate(int* nums, int numsSize, int k)
{if(k>numsSize){k%=numsSize;}resver(nums,0,numsSize-k-1);//第一步,前n-k个元素逆置resver(nums,numsSize-k,numsSize-1);//第二步,后k个元素逆置resver(nums,0,numsSize-1);//整体逆置
}

需要注意的是,当k大于numsizes时,我们需要对k进行取余操作。例如当k比numsizes大于一时,相当于只进行一次轮转。

方法二:利用memcpy进行拷贝

①、利用malloc函数创建一个临时的数组,存放数据。
②、用memcpy函数将前numsSize-k个数据元素拷贝到tmp的第k个元素位置。
在这里插入图片描述
③、将nums数组中剩下的k个元素,拷贝到tmp的起始位置开始。
④、将tmp数组中的所有元素重新拷贝回nums数组中去,并且free掉临时数组tmp.

void rotate(int* nums, int numsSize, int k){if(k>numsSize){k%=numsSize;}int *tmp=(int*)malloc(sizeof(int)*numsSize);memcpy(tmp+k,nums,sizeof(int)*(numsSize-k));memcpy(tmp,nums+(numsSize-k),sizeof(int)*k);memcpy(nums,tmp,sizeof(int)*numsSize);free(tmp);
}

运行结果

在这里插入图片描述

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

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

相关文章

使用夜神模拟器进行android开发

1. 安装 进入 夜神模拟器官网 进行下载安装 2. 使用 找到夜神模拟器安装路径下的 bin 文件夹&#xff1a;C:\Program Files (x86)\Nox\bin 切换到 bin 目录之后&#xff0c;输入以下命令连接模拟器&#xff1a; nox_adb connect 127.0.0.1:62001 在启动 android 项目前&…

机器学习—数据集(二)

1可用数据集 公司内部 eg:百度 数据接口 花钱 数据集 学习阶段可用的数据集&#xff1a; sklearn:数据量小&#xff0c;方便学习kaggle&#xff1a;80万科学数据&#xff0c;真实数据&#xff0c;数据量大UCI&#xff1a;收录了360个数据集&#xff0c;覆盖科学、生活、经济等…

书生·浦语大模型实战营 | 第3次学习笔记

前言 书生浦语大模型应用实战营 第二期正在开营&#xff0c;欢迎大家来学习。&#xff08;参与链接&#xff1a;https://mp.weixin.qq.com/s/YYSr3re6IduLJCAh-jgZqg 第三堂课的视频链接&#xff1a;https://www.bilibili.com/video/BV1QA4m1F7t4/ 本次笔记是学习完第三堂课…

STM32使用标准版RT-Thread,移植bsp中的板文件后,想使用I/O设备模型,使用串口3或者串口4收发时,发现串口3或者串口4没反应

STM32移植RT-Thread出现的问题及解决办法 问题原因解决方法 问题 使用标准版RT-Thread,移植bsp中的板文件后&#xff0c;想使用I/O设备模型&#xff0c;使用串口3或者串口4收发时&#xff0c;发现串口3或者串口4没反应。出现问题&#xff1a;程序一直跑在 while (__HAL_UART_…

数据结构课程设计(七)---求图的中心顶点 [图]

1.7.1 题目内容 1.7.1-A [问题描述] 假设有一个公司在某个地区有n个产品销售点&#xff0c;现根据业务需要打算在其中某个销售点上建立一个中心仓库&#xff0c;负责向其它销售点提供产品。由于运输线路不同&#xff0c;运输费用也不同。假定每天需要向每个销售点运输一次产品…

[深度学习] 无人车避开赛道边的障碍物

https://developer.horizon.cc/forumDetail/146176821770230117 https://developer.horizon.cc/nodehubdetail/184587678518566921 https://developer.horizon.ai/forumDetail/185446132959372300 https://developer.horizon.ai/forumDetail/185446371330059463 用精灵标注助手…

伪装目标检测论文阅读之:《Confidence-Aware Learning for Camouflaged Object Detection》

论文地址&#xff1a;link code:link 摘要&#xff1a;   任意不确定性捕获了观测结果中的噪声。对于伪装目标检测&#xff0c;由于伪装前景和背景的外观相似&#xff0c;很难获得高精度的注释&#xff0c;特别是目标边界周围的注释。我们认为直接使用“嘈杂”的伪装图进行训…

C语言 知识点 + 笔记(2w7千字 持续更新...)

目录 前言 第 1 章 C语言的流程 计算机基础 (1) 十进制转 N 进制 例1 十进制转二进制 例2 十进制转八进制 例3 十进制十六进制 (2) N进制 转十进制 例1 二进制转十进制 例2 八进制转十进制 例3 十六进制转十进制 (3) 原码反码补码 第 2 章 数据类型、运算符和表达…

k8s-pod设置执行优先级

Pod的优先级管理是Kubernetes调度中的一个重要特性&#xff0c;通过PriorityClass&#xff08;优先级类&#xff09;的设置&#xff0c;我们可以为Pod指定不同的优先级&#xff0c;从而在资源有限的情况下更精细地调整调度顺序 什么是PriorityClass&#xff1f; PriorityClass是…

【InternLM 实战营第二期-笔记1】书生浦语大模型开源体系详细介绍InternLM2技术报告解读(附相关论文)

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型,很高兴能参与本次第二期训练营&#xff0c;我也将会通过笔记博客的方式记录学习的过程与遇到的问题&#xff0c;并为代码添加注释&#xff0c;希望可以帮助到你们。 记得点赞哟(๑ゝω╹๑) 书生浦语大模型开源体系…

Zookeeper中的节点类型和实现持久化的两种方式

进入zookeeper的bin目录&#xff0c;执行./zkServer.sh start ../conf/zoo.cfg启动&#xff01; Zookeeper内部的数据模型 类似于数据结构中的树&#xff0c;同时也很像文件系统的目录&#xff0c; 节点的类型 持久节点&#xff1a;create /znode 创建出的节点&#xff0c…

Shell脚本学习(一):Shell入门与Shell变量

Shell学习章节目录 Shell入门与Shell变量。 Shell内置命令。 Shell运算符与执行运算命令。 流程控制语句。 Shell函数。 Shell重定向。 Shell好用的工具&#xff0c;cut sed awk sort。 大厂常见企业面试题。 Shell入门&#xff1a;介绍 对于入门&#xff0c;我们需要知道几…

加密行业4大新趋势:Restaking、Layer3、AI、DePin

Web3经济是由用例、创新、炒作和趋势驱动的&#xff0c;而用户活动构成了这些驱动力的基础&#xff0c;也是评估加密项目或板块增长潜力的关键指标。趋势造就了加密市场的热点&#xff0c;并推动市场周期的价格发现。 上一次牛市周期&#xff0c;我们见证了元宇宙和NFT项目的爆…

2011年认证杯SPSSPRO杯数学建模A题(第一阶段)客机水面迫降时的姿态全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 A题 客机水面迫降时的姿态 原题再现&#xff1a; 2009 年 1 月 15 日下午&#xff08;美国东部时间&#xff09;&#xff0c;US Airways 所属第 1549 航班&#xff08;空中客车 A320 客机&#xff09;在起飞后不久在纽约哈德逊河紧急迫降。经及…

【算法刷题 day23】Leetcode: 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 文档链接&#xff1a;[代码随想录] 题目链接&#xff1a; 669. 修剪二叉搜索树 题目&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树…

开发有哪些常见陷阱?

引言 在当今数字化时代&#xff0c;软件开发已成为推动科技进步和商业发展的重要引擎。然而&#xff0c;软件开发并非一帆风顺&#xff0c;其中蕴藏着许多陷阱和挑战。如何避免这些陷阱&#xff0c;提高软件开发的效率和质量&#xff0c;成为开发者们面临的重要问题 本文将深…

【linux深入剖析】动态库的使用(续) | 动静态库的链接

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 回顾1. 打包库的使用2. 动…

智能体Agent是AI时代普通人可参与的第一个红利机会

自从生成式 AI 兴起&#xff0c;掌握 prompt 能让 AI 工具更好为我们服务。而智能体的出现&#xff0c;让 AI 的使用门槛更是不断降低——都不用写 Prompt 了&#xff0c;直接用智能体就行了。 智能体Agent是AI时代普通人可参与的第一个红利机会© 由 ZAKER科技 提供 前几…

数据中心如何选择万兆光模块?

在数据中心的网络架构中&#xff0c;选择适合的万兆光模块是至关重要的。在选择过程中&#xff0c;万兆多模光模块、万兆电口模块和10G DAC是三种常见的方案。万兆光模块的选择直接关系到数据传输的速度、稳定性和成本效益。在选择过程中&#xff0c;我们可以从延迟、功耗、应用…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称&#xff1a;Java MessageService 中文&#xff1a;Java 消息服务。 JMS 是 Java 的一套 API 标准&#xff0c;最初的目的是为了使应用程序能够访问现有的 MOM 系 统&#xff08;MOM 是 MessageOriented Middleware 的英文缩写&am…