Javascript每天一道算法题(十五)——轮转数组_中等(一行解决轮转数组)

news2024/10/5 21:22:09

文章目录

  • 1、问题
  • 2、示例
  • 3、解决方法
    • (1)方法1——while遍历(较为复杂,不推荐)
    • (2)方法2(直接截取后插入,推荐)
    • (3)方法3——优化方法2(一行解决)
  • 总结


1、问题

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

2、示例

示例 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]

3、解决方法

(1)方法1——while遍历(较为复杂,不推荐)

let nums = [1,2,3,4,5,6,7,8,9,10], k = 6
var rotate = function(nums, k) {
    // 1: 循环 k >= 1 k-- ,就是k有多大,循环多少次
    while(k>=1){
        // 2: 在数组的最前面插入 删除最后的一个数据
        nums.unshift(nums.pop())
        k--;
    }
    // 3: 返回的数据
    console.log('res', nums);
};
rotate(nums, k) 

(2)方法2(直接截取后插入,推荐)

let nums = [1,2,3,4,5,6,7,8,9,10], k = 6
var rotate = function(nums, k) {
    // 1: 切割k个数据,如[1,2,3,4,5,6,7,8,9,10], k = 3,获取[8,9,10]
    let newNums = nums.splice(nums.length - k,nums.length)
    // 2: 将切割后的数组解构赋值插入到原数组到最前面
    nums.unshift(...newNums)
    // 3: 返回的数据
    console.log('res', nums);
};
rotate(nums, k) 

(3)方法3——优化方法2(一行解决)

关键点: splice方法中的第一个参数可以为负数,从末尾开始计算。(这样就可以直接截取后面k个数据放到最前面,比上面的简单多了)
在这里插入图片描述

let nums = [1,2,3,4,5,6,7,8,9,10], k = 6
var rotate = function(nums, k) {
    // 思路和方法二是一样的,区别是splice这个方法插入负数的使用方式
    nums.splice(0,0,...nums.splice(-k)) // 将后面截取的放到最前面
    console.log('res', nums);
};
rotate(nums, k) 

总结

难度:中等
其他:在方法三中,你也可以使用unshift将截取多解构赋值插入,同方法二中类似。说这些是想说明思路很重要。

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

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

相关文章

快速成为接口测试高手:实用指南!

大量线上BUG表明,对接口进行测试可以有效提升产品质量,暴露手工测试时难以发现的问题,同时也能缩短测试周期,提升测试效率。但在实际执行过程中,接口测试被很多同学打上了“上手难,门槛高”的标签。 本文旨…

【Spring Boot 源码学习】自定义 Banner 信息打印

Spring Boot 源码学习系列 自定义 Banner 信息打印 引言往期内容主要内容1. ResourceBanner 打印1.1 添加默认的 banner.txt 资源文件1.2 指定任意路径的资源文件1.3 添加自定义的信息 2. ImageBanner 打印2.1 添加默认的图像资源文件2.2 指定任意路径的图像资源文件2.3 添加自…

2023年【熔化焊接与热切割】免费试题及熔化焊接与热切割模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 熔化焊接与热切割免费试题是安全生产模拟考试一点通生成的,熔化焊接与热切割证模拟考试题库是根据熔化焊接与热切割最新版教材汇编出熔化焊接与热切割仿真模拟考试。2023年【熔化焊接与热切割】免费试题及…

16个产品经理必备的原型设计软件盘点

原型就像一幅画,比千言万语好。将产品或界面的概念转化为特定的对象是设计过程中的一个关键点,也是每个设计师创作过程的一部分。 每个设计师都应该有一个合适的原型工具。今天,将介绍18种设计原型工具,让我们看看! …

LV.12 D19 ADC实验 学习笔记

一、ADC简介 1.1 ADC ADC(Analog to Digital Converter)即模数转换器,指一个能将模拟信号转化为数字信号的电子元件 1.2 ADC主要参数 分辨率 ADC的分辨率一般以输出二进制数的位数来表示,当最大输入电压一定时,位数越高&#xff0c…

Python基础之中常用的数据类型总结,从入门到入土的python教程之一。

文章目录 Python 中常用的数据类型包括:Python 中布尔类型(bool)Python 中的数字类型概述Pyhon中的字符串概述Python 中的List概述Python 中的元组类型(tuple)Python中的字典(Dictionary)Python中的集合(Set)Python中的…

静态web服务器开发之HTTP协议

文章目录 版权声明HTTP协议网址HTTPS补充:HTTP的无状态特性浏览器访问Web服务器流程HTTP协议请求报文HTTP GET请求报文分析POST请求方式要点总结 HTTP协议响应报文HTTP 响应报文分析HTTP 状态码要点总结 HTTP协议通信过程查看 版权声明 本博客的内容基于我个人学习…

基于uniapp的 电子书小程序——需求整理

前言 想开发一个很简单的 电子书阅读小程序,要怎么做的。下面从功能、数据库设计这一块来说一下。说不一定能从某个角度提供一些思路 开发语言 springcloud uniapp 小程序(vue2)mysql 说明 电子书的主题是电子书,我们在日常…

运行软件报错找不到vcruntime140.dll无法继续执行代码怎么办-6个解决方法

vcruntime140.dll是一个由Microsoft Visual C提供的运行时库文件,它为许多Microsoft Visual Studio开发的应用程序提供了必要的支持。这个文件对于许多Windows应用程序的正常运行至关重要。然而,有时会出现vcruntime140.dll缺失的问题,导致应…

“继续教育”招生报名网存在支付漏洞

1.找到该网站的一个登录页面,注册好账户密码登录进去 2,进去之后,找到一个网上缴费功能 3.选择338元的套餐,支付方式我选的支付宝用burp抓包 发现money0参数与金额有关,于是就尝试把monet0改成一看看能不能搞一个零元购…

超级应用平台(HAP)起航

各位明道云用户和伙伴, 今天,我们正式发布明道云10.0版本。从这个版本开始,我们将产品名称正式命名为超级应用平台(Hyper Application Platform, 简称HAP)。我们用“超级”二字表达产品在综合能力方面的突破&#xff…

Java特殊文件

Properties 读取数据 package com.itheima.d1;import java.io.FileNotFoundException; import java.io.FileReader; import java.nio.charset.StandardCharsets; import java.util.Properties; import java.util.Set;public class Test1 {public static void main(String[] arg…

免费时代结束:百度云加速取消所有免费套餐

我是卢松松,点点上面的头像,欢迎关注我哦! 在网站时代,凭借着“品牌”“SEO”“免费”的优势,百度云加速一跃成为国内最大的CDN服务商。但随着站长时代结束,和网站相关的产品越来越少,收费的名…

【极客技术】真假GPT-4?微调 Llama 2 以替代 GPT-3.5/4 已然可行!

近日小编在使用最新版GPT-4-Turbo模型(主要特点是支持128k输入和知识库截止日期是2023年4月)时,发现不同商家提供的模型回复出现不一致的情况,尤其是模型均承认自己知识库达到2023年4月,但当我们细问时,Fak…

系统安全测试要怎么做?

进行系统安全测试时,可以按照以下详细的步骤进行: 1、信息收集和分析: 收集系统的相关信息,包括架构、部署环境、使用的框架和技术等。 分析系统的安全需求、威胁模型和安全策略等文档。 2、威胁建模和风险评估: …

野指针详解

1.定义 概念&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#xff09;。 2.野指针成因 A.指针未初始化 #include <stdio.h> int main() { int *p;//局部变量指针未初始化&#xff0c;默认为随机值*p 20;return 0;…

GitHub Copilot:做出一个划时代的产品,只需要 6 个人

当前&#xff0c;Copilot 已经成为国内开发者常用的辅助工具。就像有的开发者评价称&#xff0c; “编码时&#xff0c;我希望干扰最少。在这方面&#xff0c;Copilot 给我提供了巨大的帮助。它减少了我可能花在网络上寻找解决方案的时间&#xff0c;而且它们在我最喜欢的 IDE …

C#学习相关系列之base和this的常用方法

一、base的用法 Base的用法使用场景主要可以概括为两种&#xff1a; 1 、访问基类方法 2、 调用基类构造函数 使用要求&#xff1a;仅允许用于访问基类的构造函数、实例方法或实例属性访问器。从静态方法中使用 base 关键字是错误的。所访问的基类是类声明中指定的基类。 例如&…

Latex 基本操作

好久没写博客了&#xff0c;最近一直在写毕业论文&#xff0c;不过对 Latex 的使用进一步了解&#xff0c;这里整理下来方便小伙伴们学习和参考。可以在 Gituhub 上找自己学校的模板&#xff0c;通常我们都是在找到的模板上进行写作&#xff0c;只需要掌握一下基本操作&#xf…

生物动力葡萄酒和有机葡萄酒一样吗?

农业维持了数十万年的文明&#xff0c;但当人类以错误的方式过多干预&#xff0c;过于专注于制造和操纵产品时&#xff0c;农业往往会失败。如果我们的目标是获得最高质量的收成&#xff0c;并长期坚持我们的做法&#xff0c;我们就必须与土地打交道。 当我们开始寻找生物动力…