LeetCoded第25题题解--K个一组翻转链表--java--链表

链表

  • 单链表:链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素的引用字段链接在一起。
  • 双链表:与单链表不同的是,双链表的每个节点都含有两个引用字段。

链表优点

  • 灵活分配内存空间
  • 能在O(1)时间内删除或者添加元素(单链表前提是元素的前一个元素已知,双链表前提是前后元素已知)

缺点

  • 查询一个元素需要O(n)时间(从头根据引用找到下一个节点)

解题技巧

  • 利用快慢指针(有时候需要用到三个指针)(例如:链表翻转,寻找倒数第k个元素,寻找链表中间位置的元素,判断链表是否有环)
  • 构建一个虚假链表头

LeetCoded第21题题解–合并两个有序链表
LeetCoded第206题题解–反转链表
LeetCoded第2题题解–两数相加

25.K个一组翻转链表

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
.
.
示例:
给你这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
.
.
说明:
你的算法只能使用常数的额外空间。
你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

解题思路

  1. 首先保证链表长度大于K,否则直接返回原链表就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫逸风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值