鬼吹灯之精绝古城下载迅雷,妖精的尾巴xp主题,任峰
题目来源:
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
示例:
给你这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
说明:
思路:迭代、翻转链表
具体思路:
具体的代码实现如下。
# definition for singly-linked list. # class listnode: # def __init__(self, x): # self.val = x # self.next = none class solution: def reversekgroup(self, head: listnode, k: int) -> listnode: if head == none and head.next == none and k < 2: return head # 定义哨兵节点 dummy = listnode(0) # 指向节点 dummy.next = head # 定义前驱后继节点 pre = dummy tail = dummy # 控制 tail 到待翻转链表部分的末尾 while true: count = k while count > 0 and tail != none: count -= 1 tail = tail.next # 到达尾部时,长度不足 k 时,跳出循环 if tail == none: break # 这里用于下次循环 head = pre.next # 开始进行翻转 while pre.next != tail: tmp = pre.next pre.next = tmp.next tmp.next = tail.next tail.next = tmp # 重置指针 pre = head tail = head return dummy.next
以上就是使用迭代,根据题目提供的 k 值确定翻转链表部分,在内部实现翻转,进而解决《25. k 个一组翻转链表》的主要内容。其中注意要定义链表的前驱和后继,防止指向错误。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论