打败算法 —— 反转链表

本文参考

出自LeetCode上的题库 —— 反转链表,该题比较简单,但是反转的思想会在很多场景中出现,因此记录一下

https://leetcode-cn.com/problems/reverse-linked-list/

反转链表问题

给你单链表的头节点 head ,返回反转后的链表

示例1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:
输入:head = [1,2]
输出:[2,1]

示例 3:
输入:head = []
输出:[]

解题思路

只需要增加一个指针记录前一个结点的信息就能够实现反转,官方题解还提供了递归的解法,类似于之前"排序列表"的递归解法。不过用递归的思想反而使解题过程变得复杂,本文只记录循环解法

循环解法

class ListNode:
  def __init__(self, val=0, next=None):
    self.val = val
    self.next = next
class Solution:
  def reverseList(self, head: ListNode) -> ListNode:
    pre = None
    while
head:
      tmp = head.next
      head.next = pre
      pre = head
      head = tmp
    return pre

posted @ 2022-03-07 13:39  咕~咕咕  阅读(38)  评论(0编辑  收藏  举报