当前位置: 首页 > news >正文

LeetCode Hard|【25. K 个一组翻转链表】

力扣题目链接

首先我们考虑一种很直观的思路:

  • 遍历链表,统计链表长度
  • 遍历链表,进行翻转
    • 对于每一组长度为 K 的节点,进行翻转
    • 如果剩余节点不足 K 个,则不进行翻转
  • 连接翻转后的子链表
    这里我们用的就是只用 O(1) 额外内存空间的算法

关于如何 k 个节点个数的链表

我认为这里最重要的是链表的翻转,当你知道需要翻转的链表长度的时候,这个方法应该按照固定模版来进行,也就是我们的三指针:

for (int i = 1; i < k; i++) {cur->next = nex->next;nex->next = pre->next;pre->next = nex;nex = cur->next;
}

但是还记得我们之前在做反转链表题目的时候是怎么处理的嘛:

while (cur) {ListNode *nex = cur->next;cur->next = pre;pre = cur;cur = nex;
}

这里简单直观多了,最大的区别是什么呢?

首先,做整表翻转的时候,我们的逻辑非常简单
其次,对于对 k 个节点分组翻转,并且我们还必须做到对剩余的 k 个节点不进行翻转,势必有这样形式的代码:

while (cout >= k) {...for (...) {...}...count -= k;
}

CPP总体代码:

class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {if (!head || k == 1) return head;ListNode *dummyHead = new ListNode();dummyHead->next = head;ListNode *cur = dummyHead, *pre = dummyHead, *nex = dummyHead;int count = 0;cur = head;while (cur) {cur = cur->next;count++;}while (count >= k) {cur = pre->next;nex = cur->next;for (int i = 1; i < k; i++) {cur->next = nex->next;nex->next = pre->next;pre->next = nex;nex = cur->next;}pre = cur;count -= k;}return dummyHead->next;}
};
http://www.lryc.cn/news/416832.html

相关文章:

  • python爬虫预备知识三-多进程
  • 【zlm】针对单个设备的音频的编码的设置
  • 文案人的梦工场,网易入职指南!
  • 做一个能和你互动玩耍的智能机器人之七-接入对话和大模型
  • 阿里巴巴商家联系方式采集软件使用教程
  • Golang | Leetcode Golang题解之第326题3的幂
  • 人大金仓(Kingbase)数据库高阶函数详解
  • 云原生真机实验
  • 【电子电路学习笔记】——模电笔记
  • 部署伪分布式 Hadoop集群
  • 十九、虚拟机VMware Workstation(CentOSDebian)的安装
  • 理解Android framework之AOSP:从内核到应用层
  • 杂谈c语言——3.内存对齐
  • 瑞芯微Android设备指定应用开启性能模式
  • ASP.NET Core基础 - 简介
  • Flask+LayUI开发手记(一):LayUI表格的前端数据分页展现
  • Vulnhub靶场DC-9练习
  • Java对象内存布局和对象头
  • python:基于YOLO框架和遥感图像的目标检测
  • DAMA学习笔记(十一)-元数据管理
  • 密码学基本理论
  • 【深度学习】【语音TTS】vits 论文,Variational Inference Text-to-Speech(1)
  • javascript中 window 相关知识点以及代码演示
  • 企业社会责任(CSR)国际标准有哪些?
  • The C programming language (second edition,KR) exercise(CHAPTER 7)
  • 面向服务架构(SOA)介绍
  • 关于使用Next遇到的一些新特性
  • Python 爬虫入门(七):requests 库的使用「详细介绍」
  • 两端约束的最优控制问题及其数值解法
  • 电磁仿真--基本操作-CST-(6)-导线周围磁场