leetcode 25、k个一组翻转链表

news2024/10/6 2:29:39

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

/**
 * 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; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        if(head == null || head.next == null) return head;
        ListNode dummy = new ListNode();
        dummy.next = head;  //设置一个虚拟头节点
        ListNode pre,start,end,next;
        pre = dummy;  //每次pre都是反转的那个链表的头节点之前的那个节点
        start = dummy.next; //要反转的那个链表的头节点
        end = getEnd(pre,k); //找到要反转链表的尾节点
        while(end != null){
            next = end.next;  //next为end的下一个节点,也就是下一次循环的start
            end.next = null;  //断开当前尾节点的连接,方便链表部分反转
            pre.next = reverse(start);  //反转链表
            pre = start;  //start是当前的最后一个节点,也就是下一次反转的头节点之前的那个节点(pre)
            start.next = next; //连接断开的链表
            start = next;  //重置start节点
            end = getEnd(pre,k); //获取下一次反转的尾节点
        }

        return dummy.next;
    }

    public ListNode reverse(ListNode head){
        ListNode pre = null;
        ListNode curr = head;
        while(curr != null){
            ListNode next = curr.next;
            curr.next = pre;
            pre = curr;
            curr = next;
        }
        return pre;
    }

    public ListNode getEnd(ListNode pre,int k){
        while(k != 0){
            pre = pre.next;
            if(pre == null) return null;
            k--;
        }
        return pre;
    }
}

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

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

相关文章

C++程序设计-练手题集合【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下C程序设计中的练手题,以供大家期末复习和考研复习的时候使用。 C程序设计系列文章传送门: 第一章 面向对象基础 第四/五章 函数和类和对象 第六/七/八章 运算符重载/包含与继承/虚函数…

项目实战-tpshop商城项目

项目实战-tpshop商城项目 环境部署准备软件工具准备远程连接测试远程连接测试-查看虚拟机IP地址远程连接测试-检测本机与虚拟机是否连通远程连接测试-通过远程工具连接linux服务器 常见问题处理 环境部署项目技术架构介绍部署tpshop项目-tpshop验证数据库验证用户信息表熟悉商品…

API接口数据集接口pytorch api接口获取数据

API是应用程序的开发接口,在开发程序的时候,我们有些功能可能不需要从到到位去研发,我们可以拿现有的开发出来的功能模块来使用,而这个功能模块,就叫做库(libary)。比如说:要实现数据传输的安全&#xff0c…

这五款高性能骨传导耳机入手不后悔!附带骨传导耳机选购攻略!

随着健康生活的逐渐流行,越来越多的人开始注重运动和健身,在这一背景下,骨传导耳机作为当下最热门的健身装备,已成为市场上最受欢迎的产品之一,随着骨传导耳机的热度增高,与此同时也引发了一些不良商家和劣…

第八十天 WAF攻防-漏洞利用HPP污染分块传输垃圾数据

第80天 WAF攻防-漏洞利用&HPP污染&分块传输&垃圾数据 参考点: #将MySQL注入函数分为几类 拆分字符串函数:mid、1eft、1pad等 编码函数:ord、hex、a3ci等 运算函数:*/&^!1 ike rlike reg等 空格替换部…

如何制作产品介绍二维码(一):编辑二维码内容

本篇主要以官方模板「产品详情介绍」为例,教大家如何从0开始制作单个产品介绍二维码,在掌握操作技巧后,你也能快速制作出一个效果不错的二维码。 该教程主要分以下4个部分: 编辑内容:指的是如何把图片、文件、音视频…

算法刷题day28

目录 引言一、截断数组二、双端队列三、日期统计 引言 这几道题是周赛里的几道题目,第一道题目我没用这种方法,但还是做出来了,用的一种比较特殊的思考方法,就是把每一个点都判断出来,不满足要求的就舍弃,…

ElasticSearchLinux安装和springboot整合的记录和遇到的问题

前面整合遇到的一些问题有的记录在下面了,有的当时忘了记录下来,希望下面的能帮到你们 1:Linux安装ES 下载安装: 参考文章:连接1 连接2 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch…

如何关闭微软的Edge浏览器右击提示的:“使用copilot重写“的提示?

最近在使用微软的edge浏览器写文档的时候,总是不小心右击鼠标,提示 有时候挺烦人的,那怎么关闭呢? 打开edge浏览器的设置 在设置中搜索AI,并关闭AI书写的选项就好了 这样就可以获得一个干净的界面了,不…

SPEL表达式及注入漏洞

SPEL,全称为Spring表达式语言,是一个由 Spring 框架提供的表达式语言。它是一种基于字符串的表达式语言,可以在运行时对对象进行查询和操作。 SpEL 支持在XML和注解配置中使用,它可以在Spring框架的各种组件中使用,如Spring MVC …

Visual grounding-视觉定位任务介绍

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

知识图谱技术综述

作者简介:徐增林(1980 − ),男,博士,教授,主要从事机器学习及其在社会网络分析、互联网、计算生物学、信息安全等方面的研究. 【摘要】 知识图谱技术是人工智能技术的重要组成部分,其建立的具有语义处理能力与开放互联能力的知识库,可在智能搜索、智能问答、个性化推…

Java中抽象类和接口有什么区别?

1、典型回答 接口和抽象类都是用来定义对象公共行为的,二者的主要区别有以下几点不同: 类型扩展不同:抽象类是单继承,而接口是多继承(多实现)方法/属性访问控制符不同:抽象类方法和属性使用访问…

Yolov8-车辆跟踪(BoT-SORT和ByteTrack算法)

这两种代码都是成熟的,直接调佣即可,下面是使用这两种算法的代码。 直观感受:ByteTrack预测的速度感觉比BoT-SORT快一些,流畅一些。 from ultralytics import YOLOmodel YOLO(yolov8n.pt)# results model.track(source".…

人工智能迷惑行为大赏

文章目录 每日一句正能量前言人工智能的“幽默”瞬间美好愿景背后的潜规则人工智能应用人脸识别视频监控分析自动驾驶/驾驶辅助 后记 每日一句正能量 把坚持当成一种习惯,别人光鲜的背后,都有加倍的付出,没有谁比谁更容易,只有谁比…

蚂蚁链摩斯荣获“艾瑞保险业数字化卓越服务商“奖

近日,艾瑞咨询发布《2023年中国保险业数字化转型研究报告》,摩斯隐私计算解决方案被报告入选,并获得“保险业数字化卓越服务商”奖。 蚂蚁摩斯是隐私计算行业的领先布局者:早在2017年,蚂蚁集团启动了隐私计算项目&…

【存储】ZYNQ+NVMe小型化全国产存储解决方案

文章目录 1、背景2、基础理论3、设计方案3.1、FPGA设计方案3.1.1、NVMe控制器实现3.1.2、NVMe控制器实现 3.2 驱动软件设计方案3.2.1 读写NVMe磁盘软件驱动3.2.2 NVMe磁盘驱动设计3.2.3 标准EXT4文件系统设计 3.3 上位机控制软件设计方案 4、测试结果4.1 硬件测试平台说明4.2 测…

HTML图片和多媒体标签

文章目录 1. 图片标签1.1. img 标签1.2. 相对路径1.3. 绝对路径 2. 多媒体标签2.1. 音频标签2.2. 视频标签 1. 图片标签 1.1. img 标签 img标签是用来加载图片的&#xff0c;比如我们加载一张喜羊羊的照片。 <!DOCTYPE html> <html lang"zh-CN"><h…

嵌入式学习37-TCP并发模型

TCP并发模型: 1.TCP多线程模型: 缺点: 1.创建线程会带来 资源开销 2.能够实现的 并发量 比较有限 2.IO模型: 1.阻塞IO: 没有…

Linux学习(1)——Linux文件目录

1.Linux目录层次标准 Linux文件系统最顶端的目录是——根目录&#xff1a;“/”&#xff0c;Linux所有文件和目录&#xff0c;都是挂载在根目录下面的。 可以在Linux终端中用“cd /”命令&#xff0c;进入到根目录下&#xff1b;再用“ls”命令&#xff0c;查看里面的各个子目录…