欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指offer第二版(Python3)--面试题24:翻转链表

程序员文章站 2024-01-15 12:48:40
...

第2章 面试需要的基础知识

第3章 高质量的代码

  面试题16:数值的整数次方

  面试题21:调整数组顺序使奇数位于偶数前面

  面试题22:链表中倒数第k个结点

  面试题24 :翻转链表

第4章 解决面试题的思路

第5章 优化时间和空间效率

第6章 面试中的各项能力

第7章 两个面试案例


题目描述
牛客网
  输入一个链表,反转链表后,输出新链表的表头。

解题思路
牛客网
  初始化两个指针pre和head,分别指向None和头节点。循环判断head是否为空。

  1. head为空,退出循环,跳到步骤4;head不为空,用临时变量next保存head的下一个节点,next = head.next;
  2. 将pre节点赋值给head.next,使得head指向pre,这样就翻转了一个节点指向;
  3. 将pre指向head,head指向临时变量next的节点,回到步骤1;
  4. 返回pre节点。
    剑指offer第二版(Python3)--面试题24:翻转链表
    实战
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if not pHead or not pHead.next:
            return pHead
        pre, cur = None, pHead
        while cur:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        return pre