Leetcode_med 92. 反转链表 II

描述

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。

说明:
1 ≤ m ≤ n ≤ 链表长度。

示例:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

Python

注释很详细

class Solution:
    def reverseBetween(self, head, m, n):

        if m==n:
            return head
        # Consider linked list as a list A. i.e. A[1]=head.val, A[2]=head.next.val ....
        # Create dummy.         [D,A[1],A[2],....]        
        dummy=ListNode(0)
        dummy.next=head
        # c at A[0]
        c=dummy

        # move c m-1 times. now c is at A[M-1]
        for _ in range(m-1):
            c=c.next

        # start reversing from s=c.next (A[M]) for n-m+1 nodes
        s,r=c.next,None
        for _ in range(n-m+1):
            s.next,s,r=r,s.next,s

        # now the situation is
        # [dummy .... c]    [r,..., c.next]   [s .....]
        # connect c to r, and c.next to s


        # careful. c.next,c.next.next=r,s gives you an error
        c.next.next,c.next=s,r

        return dummy.next
全部评论

相关推荐

04-21 11:22
已编辑
中华女子学院 UE4
耐心学习_佩可officical:直接举报他,佬,违反劳动法我记得boss会下架
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务