轮转数组(Leedcode)的题目

embedded/2024/10/31 5:35:11/

题目:给定一个整数数组 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]

这是一类接口性质的题目;我们只需要在看里面完成这个函数的内容

首先我们来看,他让我们将数组轮转,我们先来分析一下轮转一次的结果,用示例一来演示:

我们先来思考一下就是k如果大于数组的长度呢?我们又是什么情况,假如这里我们的k是10的话是不是和移动3次的结果一样呢,所以这里我们需要去做一个处理,就是:k=k%numsSize,这个就是我们真正要移动的次数;

我们这里有多种解法:

第一种:三段逆置的方法:

第一次就是把前面n-k个数字逆置,

第二次就是将后面k个数字逆置,

第三次就是将我们的整个数组逆置;

所以这里我们只需要先写一个逆置的函数再去调用三次就可以了,这里的时间复杂度是O(N);是一个比较优的解了;

代码:

void ror(int* nums, int leaft, int right)
{while (leaft < right);{int temp = nums[leaft];nums[leaft] = nums[right];nums[right] = temp;leaft++;right--;}
}
void rotate(int* nums, int numsSize, int k) {ror(nums, 0, numsSize - k - 1);ror(nums, numsSize - k, numsSize - 1);ror(nums, 0, numsSize - 1);
}

第二种:我们每次就可以把每个后面往前移动,移动k次,我们最开始是用一个变量来存下你要移动的值;在将数组从后往前移动:像这样移动k次;

但是这个方法过不了,会超出时间限制;所以看一下这个思路吧,虽然这个解法是一种暴力求解


http://www.ppmy.cn/embedded/9354.html

相关文章

如何查看Debian Linux的内核版本

2024年4月19日&#xff0c;周五上午 uname -r

HBuilder如何发布前端H5应用

目录 一、点击菜单 “发行” -> “网站-PC Web或手机H5...”二、输入网站标题和网站域名&#xff0c;点击【发行】按钮三、创建应用1.登录 DCLOUD 开发者中心2.点击【创建应用】按钮&#xff0c;进入创建应用页面3.应用类型选uni-app&#xff0c;输入应用名称、应用描述后提…

笨蛋学C++【C++基础第四弹】

C基础第四弹 11.C日期&时间12.C基本的输入输出12.1I/O库头文件12.2标准输出流&#xff08;cout&#xff09;12.3标准输入流&#xff08;cin&#xff09;12.4标准错误流&#xff08;cerr&#xff09;12.5标准日志流&#xff08;clog&#xff09; 13.C结构体13.1访问结构体成…

计算机服务器中了locked勒索病毒怎么办,locked勒索病毒解密工具流程步骤

随着网络技术的不断应用与发展&#xff0c;越来越多的企业离不开网络&#xff0c;网络大大提升了企业的办公效率水平&#xff0c;也为企业的带来快速发展&#xff0c;对于企业来说&#xff0c;网络数据安全成为了大家关心的主要话题。近日&#xff0c;云天数据恢复中心接到多家…

【做一名健康的CSDNer】程序员哪几种行为最伤肾(程序员必看)

虽然没有专门针对程序员这一职业群体特有的伤肾行为的研究报道&#xff0c;但根据一般人群的健康风险和生活习惯&#xff0c;程序员由于其特殊的工作模式和环境&#xff0c;可能更容易出现如下伤肾的行为&#xff1a; 熬夜加班&#xff1a; 程序员由于项目进度、bug修复等原因&…

DBUnit增强:填充随机数据和相对时间数据

痛点 测试环境验证时&#xff0c;遇到与当前相对时间相关的测试吗&#xff1f;准备一份SQL&#xff1f;隔一段时间就不能用了。每过一段时间去更新脚本或重置系统时间&#xff1f;看上去也不是很合适的解决方案。依赖数据测试时要重新做&#xff0c;演示时候得全部改&#xff…

自然语言处理(Natural Language Processing, NLP)简介

自然语言处理 (NLP) 是计算机科学的一个分支&#xff0c;更具体地说&#xff0c;是人工智能 (AI) 的分支&#xff0c;旨在让计算机能够以与人类大致相同的方式理解文本和语音。 自然语言处理 (NLP) 将计算语言学&#xff08;基于规则的人类语言建模&#xff09;与统计、机器学…

helm介绍-部署helm私有仓库案例

helm介绍-部署helm私有仓库案例 helm介绍-部署helm私有仓库案例 在Kubernetes中部署容器云的应用也是一项有挑战性的工作&#xff0c;Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用&a…