给你单链表的头指针 head 和两个整数 left 和 right,其中 left <= right。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]

示例 2:

输入:head = [5], left = 1, right = 1
输出:[5]

提示:

  • 链表中节点数目为 n
  • 1 <= n <= 500
  • -500 <= Node.val <= 500
  • 1 <= left <= right <= n

进阶: 你可以使用一趟扫描完成反转吗?

Python 解答:
1.修改值

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
        lis = []
        i = 1
        p = head
        while i < left:
            p = p.next
            i += 1
        q = p
        while i <= right:
            lis.append(q.val)
            q = q.next
            i += 1
        while i > left:
            p.val = lis[i-left-1]
            p = p.next
            i -= 1
        return head
最后修改日期: 2021年7月28日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。