LeetCode31

206.反转链表

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

示例 1:

复制代码
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

复制代码
输入:head = [1,2]
输出:[2,1]

示例 3:

复制代码
输入:head = []
输出:[]

提示:

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000
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]:
        if head is None:
            return None
        elif head.next is None:
            return head
        else:
            dummy = ListNode()
            p = head
            while p.next is not None:
                p = p.next
            dummy.next = p
            while 1:
                p = head
                while p.next.next is not None:
                    p = p.next
                p.next.next = p
                p.next = None
                if head.next is None:
                    return dummy.next
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]:
        if head is None:
            return None
        elif head.next is None:
            return head
        else:
            q = None
            p = head
            while p is not None:
                j = p.next
                p.next = q
                q = p
                p = j
            return q

总结

从后往前,不能遍历到最后一个,只能遍历到倒数第二个。

从前往后,需要三个指针,多一个存储下一个节点。

相关推荐
武昌库里写JAVA4 分钟前
关于springcloud的坑
java·开发语言·spring boot·学习·课程设计
西猫雷婶13 分钟前
python学智能算法(十四)|机器学习朴素贝叶斯方法进阶-CountVectorizer文本处理简单测试
人工智能·python·机器学习
?abc!18 分钟前
(哈希)128. 最长连续序列
算法·leetcode·哈希算法
上单带刀不带妹20 分钟前
解锁 JavaScript 模块化:ES6 Module 语法深度指南
开发语言·前端·javascript·es6
coding随想24 分钟前
深入浅出:JavaScript ES6中类(Class)的革新与实践
开发语言·javascript·es6
Zephyrtoria29 分钟前
动态规划:01 背包(闫氏DP分析法)
java·算法·动态规划
范纹杉想快点毕业32 分钟前
解析Qt文件保存功能实现
java·开发语言·c++·算法·命令模式
电商API_1800790524739 分钟前
API 接口:程序世界的通用语言与交互基因
爬虫·python·数据挖掘·网络爬虫
AI浩1 小时前
DINO-R1:激励推理能力的视觉基础模型
python·目标检测·计算机视觉
失败又激情的man1 小时前
python爬虫关于多进程,多线程,协程的使用
开发语言·爬虫·python