【leetcode - 206】反转链表 easy
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 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: def reverseList(self, head: ListNode) -> ListNode: #遍历每一步 if not head or not head.next: return head #注意p1为空值,不是listnode空 p1 = None p2 = head #p1指向None p2指向head,反转后更新到下两个 while p2: nextnode = p2.next p2.next = p1 p1 = p2 p2 = nextnode return p1
递归:
class Solution: def reverseList(self, head: ListNode) -> ListNode: #考虑当前反转的链表为其next node后的反转链表和当前node和next node的反转 if not head or not head.next: return head nexthead = self.reverseList(head.next) head.next.next = head
#当前节点的下一个必须为空,不然会产生循环 head.next = None return nexthead
浙公网安备 33010602011771号