LeetCode热题100-反转链表

python3实现

  • 循环方法:设置双指针,空间复杂度1,时间复杂度n
python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        cur, pre = head, None
        while cur:
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp
        return pre

这里返回的pre,因为结束循环的条件为cur为空,当cur为空时,pre正好为表头。

  • 递归:注意递归设置的条件,第一次返回的表头
python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        def recur(cur, pre):
            if not cur:
                return pre
            res = recur(cur.next, cur)
            cur.next = pre
            return res
        
        return recur(head, None)
相关推荐
Trouvaille ~2 小时前
【优选算法篇】BFS 解决最短路——寻找最优路径的真谛
c++·算法·leetcode·面试·蓝桥杯·宽度优先·最短路问题
gc_22992 小时前
学习python使用Ultralytics的YOLO26进行姿势估计的基本用法
python·ultralytics·yolo26·姿势估计
2201_754864782 小时前
学习日记(2026年3月29日)
人工智能·python·机器学习
zero15972 小时前
Python 8天极速入门笔记(大模型工程师专用):第二篇-Python基础入门(变量、数据类型、print输出)
开发语言·笔记·python
Magic--2 小时前
【LeetCode 27. 移除元素】C++ 范围 for 极简实现与原理解析
c++·算法·leetcode
koping_wu2 小时前
【Java并发】CompletableFuture详解:常用API和底层原理
java·开发语言·python
旖-旎2 小时前
位运算(只出现一次的数字|||)(5)
c++·算法·leetcode·位运算
:mnong2 小时前
附图报价系统设计分析2
python·pyqt·openvino
源码之家2 小时前
计算机毕业设计:基于Python的美食推荐可视化系统 Django框架 可视化 协同过滤推荐算法 推荐系统 食物 食品 大数据 数据分析(建议收藏)✅
python·django·flask·课程设计·推荐算法·美食