题解 | #牛群的重新排列#
牛群的重新排列
https://www.nowcoder.com/practice/5183605e4ef147a5a1639ceedd447838
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param left int整型 # @param right int整型 # @return ListNode类 # class Solution: def reverseBetween(self , head: ListNode, left: int, right: int) -> ListNode: dummy = ListNode(0) dummy.next = head pre = dummy for i in range(left - 1): pre = pre.next cur = pre.next for i in range(right - left): nxt = cur.next cur.next = nxt.next nxt.next = pre.next pre.next = nxt return dummy.next
- 题目考察的知识点 : 链表的区间反转
- 题目解答方法的文字分析:
- 定义dummy节点指向头部,方便头部操作
- 移动pre指针到反转的起点前面
- 定义cur指针指向反转区间起点
- 进行区间反转,依次取nxt,改变指针方向
- 返回dummy.next即可
- 本题解析所用的编程语言:Python
- 完整且正确的编程代码
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @param left int整型 # @param right int整型 # @return ListNode类 # class Solution: def reverseBetween(self , head: ListNode, left: int, right: int) -> ListNode: dummy = ListNode(0) dummy.next = head pre = dummy for i in range(left - 1): pre = pre.next cur = pre.next for i in range(right - left): nxt = cur.next cur.next = nxt.next nxt.next = pre.next pre.next = nxt return dummy.next
牛客高频top202题解系列 文章被收录于专栏
记录刷牛客高频202题的解法思路