题解 | #链表内指定区间反转#

链表内指定区间反转

http://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

【双指针+反转链表】

双指针确定反转区间的前一个节点pre,和后一个节点post

反转指定区间的内容,通过pre和post进行连接

特殊情况的处理:

  • 当m=1时,pre=None,所以不必设置pre,同时直接返回post;否则,将pre接上后,返回head
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @param m int整型 
# @param n int整型 
# @return ListNode类
#
class Solution:
    def reverseBetween(self , head: ListNode, m: int, n: int) -> ListNode:
        # write code here
        cur,fast=head,head
        if m>1:
            i=1
            while i<m-1:
                cur=cur.next
                i+=1
            pre,cur=cur,cur.next
        j=1
        while j<n:
            fast=fast.next
            j+=1
        post=fast.next
        k=1
        while k<=n-m+1:
            tmp=cur.next
            cur.next=post
            post=cur
            cur=tmp
            k+=1
        if m>1:
            pre.next=post
            return head
        return post
全部评论

相关推荐

11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务