リスト2つのポインタの終わりから19の削除N番目のノード

この方法の一つ:

得られた第一の長さListnode、次いでL-N + 1は、上下に接続されたノード切断され

# 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

方法2:

二つのポインタを使用します

#两个指针
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