轮转数组(Leedcode)的题目

题目:给定一个整数数组 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.mzph.cn/diannao/1831.shtml

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

相关文章

C++奇迹之旅:深入学习类和对象的初始化列表

文章目录 &#x1f4dd;再谈构造函数&#x1f320; 构造函数体赋值&#x1f309;初始化列表&#x1f309;初始化列表效率&#x1f320;隐式类型转换&#x1f309;复制初始化 &#x1f320;单多参数构造函数&#x1f309;explicit关键字 &#x1f6a9;总结 &#x1f4dd;再谈构造…

厉害了,Numpy

几乎所有使用Python处理分析数据的人都用过Pandas&#xff0c;因为实在太方便了&#xff0c;就像Excel一样&#xff0c;但你知道Pandas是基于numpy开发出来的吗? Pandas和Numpy的关系类似于国产安卓系统和原生安卓&#xff0c;Numpy提供底层数据结构和算法&#xff0c;搭配数…

C++心决之类和对象详解(中篇)(封装入门二阶)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 7.const成员 8.取地址及const取地址操作符重载 1.类的…

掌握item_get_app,提升电商推广转化率

一、引言 在数字化时代&#xff0c;电商行业蓬勃发展&#xff0c;竞争也日趋激烈。为了提高销售额和用户满意度&#xff0c;电商企业需要不断探索新的推广策略和技术手段。其中&#xff0c;掌握item_get_app技术&#xff0c;对于提升电商推广转化率具有重要意义。本文将深入探…

Tomcat设计思路

1. 核心功能 HTTP请求处理&#xff1a;设计一个能够接收HTTP请求并进行分发的核心模块。 Servlet生命周期管理&#xff1a;实现Servlet的生命周期管理&#xff0c;包括初始化、销毁等功能。 线程池支持&#xff1a;为每个HTTP请求分配一个独立的线程&#xff0c;以提高并发处…

软考139-上午题-【软件工程】-软件容错技术

一、软件容错技术 提高软件质量和可靠性的技术大致可分为两类&#xff0c;一类是避开错误&#xff0c;即在开发的过程中不让差错潜入软件的技术&#xff1b;另一类是容错技术&#xff0c;即对某些无法避开的差错&#xff0c;使其影响减至最小的技术。 1-1、容错软件的定义 归…

更换本地yum源的步骤

更换本地yum源的流程与命令&#xff1a;

学习记录——Mamba 草记

Mamba 学习记录 RNN 循环神经网络,每一个时刻的隐藏状态 h t ​ h_t​ ht​​都是基于当前的输入 x t x_t xt​和前一个时刻的隐藏状态 h t − 1 h_{t-1} ht

【Canvas与艺术】绘制圆形biozhazrad蒙版

【关键点】 制作一个半圆形不透明蒙版来造成左右两边相异的明暗效果。 【成果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><tit…

Vue3、 Vue2 Diff算法比较

Vue2 Diff算法 源码位置:src/core/vdom/patch.ts 源码所在函数:updateChildren() 源码讲解: 有新旧两个节点数组:oldCh和newCh; 有下面几个变量: oldStartIdx 初始值=0 oldStartVnode 初始值=oldCh[0] oldEndIdx 初始值=oldCh.length - 1 oldEndVnode 初始值=oldCh[ol…

Arthas介绍及使用技巧

文章目录 简介能做什么&#xff1f; 使用下载并启动arthas选择应用 java 进程退出 arthas 常用查看命令帮助查看 dashboard通过 thread 命令来获取到线程的栈通过 jad 来反编译 Classwatch 查看方法出入参、sc 搜索类: 查看已加载类所在的包monitor 方法执行监控trace 方法内调…

fastgpt、dify功能分析比较

目录 前言 一、dify、fastgpt是什么&#xff1f; 二、同场pk 1.大模型接入 2.chat&#xff08;最简应用&#xff09; 3.发布应用 4.知识库 5.workflow 6.其他 三、一些point记录 总结 前言 现在都开始AI应用开发&#xff0c;何谓AI应用&#xff0c;起码要和AI大模型…

.Net使用Elastic.Clients.Elasticsearch在Elasticsearch8中实现向量存储和相似度检索

文章目录 一、测试环境二、代码1、创建包含DenseVector的索引2、索引文档3、对向量字段进行近似knn检索三、参考一、测试环境 Elastic.Clients.Elasticsearch版本:8.13.0 Elasticsearch版本:8.13.0 二、代码 1、创建包含DenseVector的索引 public static bool InitIndex(…

应对电网挑战!lonQ与橡树岭国家实验室利用量子技术改善关键基础设施

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1800字丨6分钟阅读 摘要&#xff1a;美国电网正在面临需求增加和能源扩散的挑战&#xff0c;对能够应对优化和安全挑战的创新解决方案有着迫切需求…

解决方案:用决策树算法如何生成决策树图及生成SQL规则

文章目录 一、现象二、解决方案 一、现象 一开始没有做过生成决策树图及生成SQL规则&#xff0c;一时犯了难&#xff0c;百度很多找到了解决方法&#xff0c;于是乎&#xff0c;写一篇博客&#xff0c;这样下次就能直接拿来使用咯 二、解决方案 见最后三块代码&#xff0c;为…

Linux 安装 NVM + Node

Docker TIP&#xff1a;官方文档 拉取 Node 的 Docker 镜像&#xff0c;具体版本可以在上面的官方文档中选择&#xff1a; docker pull node:14-alpine验证环境中是否有正确的 Node.js 版本&#xff1a; docker run node:14-alpine node -v验证环境中是否有正确的 NPM 版本&a…

利用结构类型实现简单通讯录

复合数据类型之结构类型 在C语言中&#xff0c;结构类型是一种复合数据类型&#xff0c;它允许用户将不同类型的数据组合成一个单一的数据结构。结构类型为用户提供了自定义数据类型的机制&#xff0c;使得可以将多个相关的数据项组合成一个整体&#xff0c;常用来处理像记录、…

验证二叉搜索树(98)

解题思路&#xff1a;可以直接中序遍历放进一个数组里根据特性判断是否是递增就可以&#xff0c;如果采用递归的思路话用中序遍历和创建一个指针指向前一个节点&#xff0c;根据前一个节点是否比上一个节点小来判断是否是二叉树 具体代码如下&#xff1a; class Solution { …

Mac搭建appium环境及python运行代码示例

Appium主要是通过调用安卓提供的接口来执行命令的&#xff0c;所以需要安装Java和安卓SDK。 1.安装Appium服务端 appium的服务端是基于node的&#xff0c;直接使用npm(node包管理器)安装即可&#xff0c;比较简单。 npm install -g appium2.安装Python客户端 pip install A…

华为P系列“砍了”,三角美学系列全新登场

2021 年 10 月&#xff0c;Intel 正式带来了颠覆以往的第 12 代酷睿「混合架构」 CPU。 不知道是良心发现还是为了弥补 11 代酷睿过于拉胯表现&#xff0c;Intel 终于把狠活儿都用在了这代。 全新 Intel 7 工艺、全新架构、单核与多核性能大幅提升&#xff0c;让大家十分默契…