数据结构习题--旋转链表

server/2024/11/24 10:25:43/

数据结构习题–旋转链表

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。注意这里的k可能超过链表的长度
在这里插入图片描述

方法:双指针

分析

旋转K次,我们其实就是相当于找到倒数第K个结点,让其成为头结点,然后让原来链表的伪结点和头相连
当然,注意,这里的k可能大于链表长度,所以我们要让其对链表长度取模

代码

package douobleneedle;public class rotateLinkList {/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}class Solution {public ListNode rotateRight(ListNode head, int k) {// 如果链表为null,或者链表只有一个结点if (head == null || head.next == null){return head;}ListNode fast = head;ListNode slow = head;// 第一次用来记录链表的长度// 第二次,用count来完成寻找倒数第k个结点的前一个结点int count = 0;// 第一次使用count,寻找到链表的长度while (fast != null){fast = fast.next;count++;}// 重新移回fastfast = head;// 通过取模计算最小的旋转次数k = k % count;// 重值countcount = 0;while (fast.next != null){// 寻找倒数第k个结点的前一个结点fast = fast.next;count++;if (count > k){slow = slow.next;}}// 完成重新连接(旋转)fast.next = head;head = slow.next;slow.next = null;return head;}}
}

http://www.ppmy.cn/server/20856.html

相关文章

Matlab无法使用GBK编码保存文件,改用UTF-8编码(已解决)

系统不让保存GBK格式编码。但是可以通过matlab另存为 的方式保持为UTF-8编码,如下操作。 然后 在弹出的窗口中,选择 UTF-8 可以保持在与源文件相同的文件夹内,将源文件覆盖掉。就可以了。

【Linux】基础指令

文章目录 基础指令1. pwd 指令2. cd 指令3. ls 指令4. touch 指令5. mkdir 指令6. rmdir 和 rm 指令7. man 指令8. cp 指令9. mv 指令10. cat 指令11. more 和 less 指令12. head 和 tail 指令13. date 指令14. cal 指令15. find 指令16. grep 指令18. zip 和 unzip 指令19. ta…

Bayes判别:统计学中的经典分类方法

在统计和机器学习领域,Bayes判别是一个基于概率理论的强大工具,用于解决分类问题。它基于Bayes定理,通过计算和比较后验概率来进行决策。这种方法在处理不确定性和不完整数据时表现尤为出色,因此在医学诊断、邮件过滤、语音识别等…

vite+vue3配置less

在Vite项目中配置LESS,你需要安装相关的插件,并在Vite配置文件中进行配置。以下是步骤和示例代码: 安装LESS和LESS插件: npm install less --save-dev npm install less-loader --save-dev 在Vite配置文件中(通常是v…

数据集笔记:处理北大POI 数据:保留北京POI

数据来源:Map POI (Point of Interest) data - Official data of the contest (pku.edu.cn) windows 下载方法:数据集笔记:windows系统下载北大开放数据研究平台的POI数据-CSDN博客 1 读取数据 1.1 列出所有的文件 dir1D:/data/PKU POI/2…

ijkplayer iOS编译问题之[-Wincompatible-function-pointer-types]

编译环境 Apple M1 Pro Sonoma 14.1.2 编译的时候出现如下报错: libavcodec/aarch64/h264dsp_init_aarch64.c:84:38: error: incompatible function pointer types assigning to h264_weight_func (aka void (*)(unsigned char *, long, int, int, int, int)) from…

计算机网络知识点

层次模型 IQS七层模型 TCP/IP 原理体系结构 应用层 应用层 应用层 表示层 运输层 运输层 会话层 网际层 网络层 运输层 网络接口层 数…

Linux 下一些简单配置和软件安装

零、前言 以 VAR 开头的表示用户可配置的变量 以 CONST 开头的表示涉及到的系统常量,例如某个特定文件的地址路径。一般不可变,但是不排除因版本不同需要进行修改。 出现 PATH 表示这是一个路径信息 一、配置 1.1、更换 yum 源 PATH_YUM_CONF"…