题目:
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
个人思路:
经典头插法,也可以存外部容器
官方答案推荐:
迭代或递归
python代码:
# 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
# newHead = ListNode(-1)
# cur = head
# while cur:
# temp = cur.next
# cur.next = newHead.next
# newHead.next = cur
# cur = temp
# return newHead.next
#递归,注意每次递归返回的都是未经处理的cur,即最后一个结点
if not head or not head.next : return head
cur = self.reverseList(head.next)
head.next.next = head
head.next = None
return cur
反思:
这个递归还真挺难想的。。。