js.轮转数组和旋转链表

这是两个相似的题型,一个是数组,另一个是链表。

链接:189. 轮转数组 - 力扣(LeetCode)

题目:

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

提示:

  • 1 <= nums.length <= 105
  • -231 <= nums[i] <= 231 - 1
  • 0 <= k <= 105

思路:

首先分为两种情况来写,

1  数组长度比k大,先取出数组的后k个值复制到新的数组。让第nums.length-1-i的值,等于它的第前k的值。再将新数组的值赋值到nums的前k个值。

2  长度比k小,反复让k减去数组长度,直到数组长度大于k。

代码:

/**

 * @param {number[]} nums

 * @param {number} k

 * @return {void} Do not return anything, modify nums in-place instead.

 */

var rotate = function(nums, k) {

    while(nums.length<=k) {

        k -= nums.length

    }

    let newarr = nums.slice(nums.length-k,nums.length)

    for(let i = nums.length-1 ; i >= k ; i-- ){

        nums[i] = nums[i-k]

    }

    while(k){

        nums[k-1] = newarr[k-1]

        k--

    }

};

第二题:

链接:61. 旋转链表 - 力扣(LeetCode)

题目:

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例 1:

输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]

示例 2:

输入:head = [0,1,2], k = 4
输出:[2,0,1]

提示:

  • 链表中节点的数目在范围 [0, 500] 内
  • -100 <= Node.val <= 100
  • 0 <= k <= 2 * 109

代码:

/**

 * Definition for singly-linked list.

 * function ListNode(val, next) {

 *     this.val = (val===undefined ? 0 : val)

 *     this.next = (next===undefined ? null : next)

 * }

 */

/**

 * @param {ListNode} head

 * @param {number} k

 * @return {ListNode}

 */

var rotateRight = function(head, k) {

    let sum = 0 , l = last = head

    while(l){

        sum++

        if(l.next==null) last = l

        l = l.next

    }

    while(k>=sum&&k&&sum){

        k-=sum

    }

    if(k==0||!head) return head

    l = head

    let num = sum - k , q = l

    while(num--){

        if(num==0){

            q = l

            l = l.next

            q.next = null

        }else{

        l = l.next

        }

    }

    last.next = head

    return l

};

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

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

相关文章

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西&#xff0c;最好的办法始终是把手打湿&#xff0c;整一个能够运行&#xff0c;可以实验的东西出来。 也只有在程序开发中&#xff0c;我们才能想一个魔法师而不是魔术师&#xff0c;我们真的能够创造一个东西。而且编…

Spring Boot——日志介绍和配置

1. 日志的介绍 在前面的学习中&#xff0c;控制台上打印出来的一大堆内容就是日志&#xff0c;可以帮助我们发现问题&#xff0c;分析问题&#xff0c;定位问题&#xff0c;除此之外&#xff0c;日志还可以进行系统的监控&#xff0c;数据采集等 2. 日志的使用 在程序中获取日…

python opencv2

二、图像预处理 1、图像翻转 cv2.flip(src, flipCode) &#xff1a;flipCode &#xff1a;0&#xff1a;沿 X 轴翻转&#xff08;垂直翻转&#xff09;&#xff1b;1&#xff1a;沿 Y 轴翻转&#xff08;水平翻转&#xff09;&#xff0c;-1&#xff1a;沿 X 轴和 Y 轴翻转&am…

文件夹0字节:原因、恢复方案与预防措施

一、文件夹0字节现象描述 在日常使用电脑的过程中&#xff0c;我们可能会遇到这样一个问题&#xff1a;某个文件夹突然变成了0字节&#xff0c;这意味着该文件夹中的所有文件似乎都不见了&#xff0c;但实际上可能并未被彻底删除。文件夹0字节的情况常常让人困惑不解&#xff…

不需要复制粘贴,重复内容如何使用Mac快速完成输入

在Mac的日常使用中&#xff0c;必然有着重复内容需要重复输入的需求&#xff0c;但是Mac的剪切板又不具备历史记录的功能&#xff0c;所以只能一次次的复制粘贴&#xff0c;费时费力&#xff0c;那么该如何才能不这么麻烦 快捷短语就是为了解决这一问题而存在的 提前在设置好…

Java 打印流:PrintStream 与 PrintWriter 详解

在 Java 编程中&#xff0c;System.out.println() 的使用频率恐怕不亚于 main 方法的使用频率。其中&#xff0c;System.out 返回的正是打印流 PrintStream。除此之外&#xff0c;Java 还提供了另一个打印流 PrintWriter&#xff0c;它们分别继承自 OutputStream 和 Writer&…

RESTful风格

目录 一、什么是RESTful 1.1 RESTFul对WEB服务接口的规定包括&#xff1a; 1.2 REST对请求方式的具体约束如下&#xff1a; 1.3 REST对URL的具体约束如下&#xff1a; 1.4 RESTFul的核心概念&#xff1a; 二、RESTful风格与传统方式对比 三、RESTful风格演示 3.1 查询所…

运维工具之docker入门

1.容器与docker 1.什么是容器&#xff1f; 容器是一种轻量级的&#xff0c;可移植的软件运行环境。它将软件程序本身及软件依赖库打包在一起。可以在不同平台和系统上运行。 2.什么是LXC LXC就是Linux container,。LXC是一种虚拟化技术&#xff0c;可以在操作系统层级上为应…

Ubuntu系统安装NVIDIA驱动、CUDA、PyTorch等GPU深度学习环境

学习目标&#xff1a; 在Ubuntu系统上安装CUDA、PyTorch等GPU深度学习环境&#xff0c;主要目标是为深入研究深度学习和深度强化学习提供高效的计算支持。通过构建GPU环境&#xff0c;计划掌握深度学习的基本概念和算法应用&#xff0c;提高模型训练效率&#xff0c;特别是在复…

地理信息科学专业想搞GIS开发:学前端还是后端?

地理信息科学专业的同学是学前端开发比较好呢还是学后端开发比较好呢&#xff1f; 部分网友&#xff1a;学前端更好 主修前端更好&#xff0c;因为地信学后端&#xff0c;是卷不赢学计算机的 本科卷前端&#xff0c;硕士阶段可以卷后端 甚至有网友直呼&#xff0c;地信根本没有…

软件测试学习笔记丨Flask框架-请求与响应

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23408 请求方法 from flask import Flaskapp Flask(__name__)app.route("/cases", methods["get"]) def get_case():return {"code": 0, "msg": &…

你敢想象吗?我能远程控制家里的电脑进入Bios

老家的爸妈用电脑也不知怎的&#xff0c;偶尔就不行了。这个偶尔还挺频繁的&#xff0c;我自己又会修电脑&#xff0c;但奈何距离太远&#xff01;如果叫别人上门修电脑&#xff0c;一次就是200…… 我的心在滴血啊在滴血&#xff5e;如果有这么一款产品&#xff0c;就算电脑无…

基于STM32的温湿度监测器教学

引言 随着科技的发展&#xff0c;温湿度监测在农业、仓储、环境监测等领域的应用越来越广泛。本文将指导您如何基于STM32开发一个简单的温湿度监测器&#xff0c;使用常用的DHT11或DHT22传感器进行数据采集&#xff0c;并将监测结果显示在LCD或OLED屏幕上。 项目名称 STM32温湿…

科研绘图系列:R语言组合堆积图(stacked plot)

文章目录 介绍加载R包数据数据预处理画图1画图2组合图形系统信息介绍 堆积图(Stacked Chart),也称为堆叠图,是一种常用的数据可视化图表,主要用于展示不同类别的数据量在总体中的分布情况。堆积图可以是柱状图、条形图或面积图的形式,其中各个类别的数据量被叠加在一起,…

红黑树的平衡之舞:数据结构中的优雅艺术

文章目录 前言&#x1f680;一、红黑树的介绍1.1 红黑树的概念1.2 红黑树的特点1.3 红黑树的性质 &#x1f680;二、红黑树结点的定义&#x1f680;三、红黑树的框架&#x1f680;四、旋转操作&#x1f680;五、红黑树的插入操作5.1 uncle结点存在且为红5.2 uncle结点不存在或者…

ONLYOFFICE 8.2版本产品评测——遥遥领先,助力自动化办公

ONLYOFFICE 产品测试体验报告总结 知孤云出岫-CSDN博客 目录 产品介绍——篇【1】 一.关于 ONLYOFFICE 桌面编辑器 二.关于 ONLYOFFICE 协作空间 三.关于 ONLYOFFICE 文档 四.关于 ONLYOFFICE的版本介绍 产品新功能——篇【2】 一.关于 ONLYOFFICE的新增功能介绍 二.ONL…

【Linux驱动开发】通过设备树节点来配置和调用GPIO(pinctrl节点和gpio-controller)

【Linux驱动开发】通过设备树节点来配置和调用GPIO&#xff08;pinctrl节点和gpio-controller&#xff09; 文章目录 设备树下pinctrl节点GPIO控制节点调用方法GPIO输入附录&#xff1a;嵌入式Linux驱动开发基本步骤开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动…

【Linux】安装 SQL Server 命令行工具 mssql-tools18(Ubuntu 22.04)

引言 mssql-tools18 是一个包含 Microsoft SQL Server 命令行工具的软件包。这些工具包括 sqlcmd 和 bcp。 sqlcmd 是一个允许你用命令行与 SQL Server 进行交互的工具。你可以用它来运行 SQL 脚本&#xff0c;执行数据库维护任务&#xff0c;以及进行其他数据库管理操作。 b…

库存管理内训课件|39页PPT

文件是一份关于库存管理的内训课件&#xff0c;内容涵盖了库存管理的定义、分类、作用、存在的问题、管控目标以及具体管控措施。以下是对课件内容的总结&#xff1a; 1. 定义及分类 库存&#xff1a;为满足未来需求而暂时闲置的有价值的资源&#xff0c;与物品是否处于运动状…

大零售时代下融合发展的新路径:定制开发技术的应用与思考

摘要&#xff1a;本文探讨在大零售背景下&#xff0c;传统零售边界模糊&#xff0c;融合成为趋势。分析大零售包含的跨行业跨业态融合等三个层面&#xff0c;重点阐述定制开发技术中的 21 链动模式、AI 智能名片和 S2B2C 商城小程序在推动大零售发展中的作用和意义&#xff0c;…