1. 程式人生 > >leetcode:[206]反轉鏈表

leetcode:[206]反轉鏈表

amp etc 開始 none 遍歷 當前 for NPU 就會

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

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

class Solution:
    """
    1->2->3->4->None

    new_head
     |
    None<-4<-3<-2<-1

    new_head就是從None開始一直到原來鏈表的尾。
    在反轉的時候先記錄下一個節點,然後將當前節點反轉,然後將更新新的表頭,再遍歷下一個節點
    """
    def reverseList(self, head: ListNode) -> ListNode:
        new_head = None
        while head:
            # 記錄下一個節點,因為等下反轉當前節點之後就會丟失下一個節點
            next_node = head.next
            # 反轉當前節點。因為相對於head來說,new_head指向的是head的前一個節點
            head.next = new_head
            # 更新新的表頭
            new_head = head
            # 將指針往後移動,這時就需要用到前面記錄的節點
            head = next_node

        # 最後new_head就是反轉後的表頭
        return new_head

leetcode:[206]反轉鏈表