19. Remove Nth Node From End of List 两个指针

方法一:

先得到listnode的长度,然后再L-n+1处断开,接上下一个node

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        dummy_head=ListNode(0)
        dummy_head.next=head  #把head储存起来
        length=0
        tmp=head
        while tmp:
            length+=1
            tmp=tmp.next
        delete_n=length-n+1
        
        if delete_n<1:
            return dummy_head.next
                    
        count=1
        h=dummy_head
        while count<delete_n:
            h=h.next
            count+=1
        tmp1=h.next
        h.next=tmp1.next
        
        return dummy_head.next

方法二:

使用两个指针

#两个指针
class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        dummy=ListNode(0)
        dummy.next=head
        first=dummy
        second=dummy
        count=1
        while count<n+1:
            first=first.next
            count+=1
        while first.next:
            first=first.next
            second=second.next
        #second的下一个node要被remove
        second.next=second.next.next
        return dummy.next
发布了183 篇原创文章 · 获赞 91 · 访问量 9998

猜你喜欢

转载自blog.csdn.net/weixin_45405128/article/details/104641310