LR’s Laboratory
友情链接
往期整理
  •   历史归档
  •   文章分类
  •   文章标签
关于我
English
NotionNext
Article
14
Category
4
Tags
9
友情链接
往期整理
历史归档
文章分类
文章标签
关于我
English
刷题日记
🔎25.K个一组翻转列表
Post on: 2024-9-10
Last edited: 2024-9-11
Views
递归
新闻
链表
type
status
date
slug
summary
tags
category
icon
password
😀
Life is a wilderness, not a track.
 

📝 今日leetcode

25.K个一组翻转链表

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。
notion image

头脑风暴

  1. K个节点的链表翻转怎么实现?
① 迭代: 要存储三个节点,pre、cur、next。cur.next = pre, pre = cur, cur = next, next = next.next;
② 递归: def reversal(ListNode head), 假设前面的节点已经翻转
such as: 原:n0→n1→n2→…→nm→nm+1→…→n
现:n0→n1→n2→…→nm→nm+1←…←n #希望nm+1的next指向nm
即nm.next.next = nm
ListNode newHead = reversal(node.next)
  1. 实现K歌一组翻转
① 主函数中判断idx:i:i+k if i+k < n 问题是链表和列表也不一样,不能用idx。需要用一个指针去实现翻转部分结尾的指示
② 调用1中翻转函数,实现该组的翻转
③ 利用循环实现
Q:前面一组翻转后,会与后面的节点断开,要用一个指针保存
子链和子链之间的链接
最终返回的头节点的讨论
需要指针: 子链表头节点head, 翻转之后,回到原链表时的前一个节点(原链表的tail.next)
notion image
回归原链表
notion image
回归后更新head和tail为下一子链表的头节点和尾节点

Solution

进阶:你可以设计一个只用 O(1) 额外内存空间的算法解决此问题吗?

见solution

🤗 总结归纳

notion image
没有涉及复杂的算法理论,但是细节很多,需要考虑得很周全,一开始很难弄明白它循环啊、指针啊各种更新的条件。
  • Author:NotionNext
  • URL:https://tangly1024.com/article/eebf966c-831c-410e-9501-2730947ae8ea
  • Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
论文阅读-Attention 重走BERT路—word2vec
Loading...
NotionNext
NotionNext
一个熟练使用智能设备的小猫🐱
Article
14
Category
4
Tags
9
Latest posts
检索-增强-生成-RAG
检索-增强-生成-RAG
2025-6-14
论文阅读系列之智能制造
论文阅读系列之智能制造
2025-3-4
论文阅读系列之时序数据处理
论文阅读系列之时序数据处理
2025-3-4
论文阅读系列之生存分析
论文阅读系列之生存分析
2025-3-3
OS与虚拟化安全
OS与虚拟化安全
2025-3-1
推荐系统学习笔记
推荐系统学习笔记
2025-2-18
Announcement
🎉欢迎来到我的博客🎉
-- 感谢您的支持 ---
👏期待下一次更新👏
操作手册
更新记录
联系我们
 
2023-2025 NotionNext.

LR’s Laboratory | 一个熟练使用智能设备的小猫🐱

Powered by NotionNext 4.7.0.