K 个一组翻转链表

news2024/10/5 12:46:07

反转链表是比较常出的一种题目,我们有简单难度的一整个链表翻转:

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

从第一个节点开始翻转,

next = cur.next;	

是为了存储当前第一节点的next值,因为它翻转就要断开原来指向二节点的next,所以要存下来。

cur.next = pre;	

存好原来的next后,可以翻转,pre我们定义就是翻转后的尾结点,所以是null。

pre = cur;	

这里把pre节点后移到一节点,为什么?因为下次我们动二节点,它的pre就是一节点,所以后挪。

cur = next;

cur节点就要变成下次我们要动的二节点,二节点之前被我们用next存了起来,就是这样啦。
最后返回pre即可。

K个一组翻转就是它的promax版本:

public ListNode reverseKGroup(ListNode head, int k) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode pre = dummy;
        ListNode end = dummy;
        while(end.next != null){
            for(int i = 0; i < k && end != null; i++) end = end.next;
            if(end == null) break;
            ListNode start = pre.next;
            ListNode next = end.next;
            end.next = null;
            pre.next = reverse(start); 
            start.next = next;
            pre = start;
            end = pre;
        }
        return dummy.next;
    }

在这里插入图片描述
借用大佬的图解,

for(int i = 0; i < k && end != null; i++) end = end.next;

这里就是对应图第三行,把end挪到对应位置。
然后就reverse,对应4行,用上了上一个代码
此时已经完成第一段,然后start.next = next;连起来;让pre = start, end =pre,重置变量,继续下次操作

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

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

相关文章

GC说明与介绍,GC的垃圾回收算法有哪些

1、GC是什么 2、GC算法概述 JVM在进行GC时&#xff0c;并非每次都对上面三个内存区域一起回收的&#xff0c;大部分时候回收的都是指新生代。 因此GC按照回收的区域又分了两种类型&#xff0c;一种是普通GC&#xff08;minor GC&#xff09;&#xff0c;一种是全局GC&#xff0…

【算法】行星碰撞机器人碰撞(栈的使用)

文章目录 行星碰撞机器人碰撞参考资料 本文记录了两个使用栈来处理碰撞问题的算法题目。 行星碰撞 https://leetcode.cn/problems/asteroid-collision/ 对于这种题目&#xff0c;各个元素分别会向左或向右移动&#xff0c;可以使用栈模拟碰撞的过程。 由于从左往右进行遍历…

Argis通过Python的Arcpy第三方库进行字段计算、批量将mxd导出为jpg图片、合并数据库

前言 近来公司有开发Arcgis脚本工具的需求&#xff0c;我就去学了一下用Arcpy来操作Arcgis的数据&#xff0c;今天学习了字段计算&#xff0c;将学习成果记录如下。 arcpy帮助文档传送门&#xff1a;https://resources.arcgis.com/zh-cn/help/main/10.2/ 一、字段计算 1、…

Linux学习之内核升级

wget --no-check-certificate https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.14.tar.xz下载源代码。 yum install -y gcc gcc-c make ncurses-devel openssl-devel elfutils-libelf-devel安装必要的依赖包。 完成之后&#xff0c;显示如下&#xff1a; …

openEuler操作系统和openGauss数据库

文章目录 1. openEuler操作系统2. openGauss数据库2.1 系统自带库2.1.1 允许所有地址访问端口2.1.2 创建远程登录用户 2.2 安装5.0 版本2.2.1 下载2.2.2 安装2.2.3 测试 1. openEuler操作系统 镜像下载地址 https://www.openeuler.org/zh/download 选一个下载 安装 按提示安…

【kubernetes系列】Kubernetes中的重要概念(三)

在实际的工作中&#xff0c;我们使用Kubernetes 通常不会直接创建 Pod&#xff0c;而是通过 各种 Controller 来管理 Pod 的。Controller 中定义了 Pod 的部署特性&#xff0c;比如有几个副本&#xff0c;在什么样的 Node 上运行等。为了满足不同的业务场景&#xff0c;Kuberne…

VMware Workstation 17 的安装

一、简介 VMware Workstation 17.0是一款功能非常强大的虚拟机&#xff0c;可以帮助用户在Windows系统上同时开启多个系统&#xff0c;不仅能在虚拟机上安装上不同的操作系统&#xff0c;比如Mac、Linux以及Windows10/11等&#xff0c;还能与云技术和容器技术&#xff08;如 D…

【金融量化】ETF基金是什么?有什么特点?

1 含义 ETF&#xff08;交易型开放式指数基金&#xff09;是以某一选定的指数所包含的成分证券或商品为投资对象&#xff0c;依据构成指数的证券或商品的种类和比例&#xff0c;采取完全复制或抽样复制&#xff0c;进行被动投资的指数基金。ETF不但具有传统指数基金的全部特色…

vue导出excle单sheet文字居中表头加粗显示

效果图&#xff1a; 首先下载依赖 npm install xlsx --save npm install xlsx-style --save在需要导出excle的vue文件中导入依赖 import XLSX from "xlsx" import XLSXStyle from xlsx-style在method中定义 methods:{// 格式化formatJson(filterVal, jsonData)…

月近万次发布,故障率<4‰如何做到?去哪儿测试左移重难点揭秘!

一分钟精华速览 去哪儿发布的数据显示&#xff0c;在过去一年中&#xff0c;其发布故障率始终保持在 4‰ 以下并不断降低。作为一家出行旅游服务平台&#xff0c;去哪儿网如何在复杂的业务场景下&#xff0c;仍能保持如此低的故障率&#xff1f;其中功能测试左移功不可没。 本…

高质量编程-编码规范之代码格式和注释

前言&#xff1a; \textcolor{Green}{前言&#xff1a;} 前言&#xff1a; &#x1f49e;这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 &#x1f49e;从这个专栏里面可以迅速获得Go的知识 本次文章不仅仅是在 go 中主要注意&#xff0c;在编写其他语言中也同样重要…

单片机介绍选型(嵌入式学习)

单片机介绍&选型 单片机介绍常见的单片机单片机如何选型 单片机介绍 单片机&#xff08;Microcontroller&#xff09;是一种集成电路芯片&#xff0c;具有处理器核心、存储器、输入/输出接口和各种外设的功能。 单片机是单片微型计算机的简称&#xff0c;MCU是Microcontro…

15. WebGPU 相机

在上一篇文章中&#xff0c;我们必须将 F 移到视锥体前面&#xff0c;因为 mat4.perspective 函数 将眼睛放在原点 (0, 0, 0) 并且把对象 放到 位于眼前 -zNear 到 -zFar 之间的视锥体中。这意味着&#xff0c;任何想要显示的东西&#xff0c;都需要放在这个空间里。 在现实世…

对英雄联盟英雄属性数据的预处理及相似度矩阵计算

目录 一、引言 二、任务1 1、填充缺失值 2、用中位数填充“生命值”属性列缺失值 3、 用均值填充“生命值”属性列缺失值 三、任务2 注&#xff1a;英雄联盟英雄属性数据资源可在博客资源中自行获取。 一、引言 英雄联盟作为一款古早的刀塔游戏&#xff0c;可谓之刀塔游…

jumpserver-v2.2.2【部署教程】

目录 什么是 跳板机 跳板机的缺点 使用堡垒机的优势 jumpserver的组件 【1】时间同步 【2】安装依赖 【3】修改数据库字符集、创建远程用户 【4】创建python的虚拟环境&#xff0c;用于专门运行jumpserver的环境 【5】获取jumpserver的代码 【6】安装编译环境依赖 …

【管理系列-09】软件成本怎么评估,知己知彼才能做软件造价

项目来了&#xff0c;总要叫来几个人&#xff0c;讨论一下成本是多少&#xff0c;能不能接&#xff0c;作为研发经理&#xff0c;能够较为合理的评估成本是一项必备技能&#xff0c;如何科学合理的评估&#xff0c;达到对内对外都满意&#xff0c;我想这是每个研发经理的必修课…

管理类联考——逻辑——知识篇——分析推理——四、数字——haimian

数字 题型识别 与数字相关的分析推理题在逻辑科目中扮演着非常重要的角色&#xff0c;可能涉及方程、不等式、分子与分母比值关系、百分比、概率、集合运算等&#xff0c;可结合数学方法或利用数字规律进行解题。 思维导图 常用公式 从某种意义上说&#xff0c;数学本身就是…

五、浅析[ElasticSearch]底层原理与分组聚合查询

目录 一、ElasticSearch文档分值_score计算底层原理1.boolean model2.relevance score算法2、分析一个document上的_score是如何被计算出来的 二、分词器工作流程1.character filter、tokenizer、token filter2、内置分词器的简单介绍3、定制分词器3.1默认的分词器--standard3.…

《教我兄弟学Android逆向13 xpose改机开发01-环境设置》

上一篇 《教我兄弟学Android逆向12 编写xposed模块》 我们了解了xpose的基本原理并一起搭建了xpose的hook环境&#xff0c;你也很好的完成了课后作业&#xff0c;但是通过后面的测试练习你发现xpose在不同系统环境的安装方法是不一样的,在我们之前的低系统手机上面直接安装就能…

LNMP六个实验

目录 访问状态统计配置 基于授权的访问控制 基于客户端的访问控制 基于域名的 Nginx 虚拟主机 基于IP 的 Nginx 虚拟主机 基于端口的 Nginx 虚拟主机 总结 访问状态统计配置 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块 修改 nginx.conf 配置文件&#xff0c;…