「这是我参与2022首次更文挑战的第32天,活动详情查看:2022首次更文挑战」
[剑指 Offer 06. 从尾到头打印链表]
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2] 输出:[2,3,1] 限制:
0 <= 链表长度 <= 10000
解题思路:
- 先判断特殊情况,如果链表为空直接返回空列表
- 对链表进行递归获取值,存入res数组中
- 通过对数组的调转操作,获取到反向的链表数组
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reversePrint(self, head: ListNode) -> List[int]:
res = []
if not head:
return res
while head:
res.append(head.val)
head = head.next
return res[::-1]
执行结果:
[剑指 Offer 24. 反转链表]
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
解题思路
- 反向链接,需要使用两个辅助链表
- 先定义好两个链表
- 递归操作 通过t作为中间链表 直至初始链表为空,返回链表b 就是我们要的答案
# 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:
a,b = head,None
while a:
t = a.next
a.next = b
b = a
a = t
return b