打败算法 —— 反转链表

本文参考

出自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 @   咕~咕咕  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示