剑指offer第二版(Python3)--面试题24:翻转链表
程序员文章站
2024-01-15 12:48:40
...
第2章 面试需要的基础知识
第3章 高质量的代码
面试题16:数值的整数次方
面试题21:调整数组顺序使奇数位于偶数前面
面试题22:链表中倒数第k个结点
面试题24 :翻转链表
第4章 解决面试题的思路
第5章 优化时间和空间效率
第6章 面试中的各项能力
第7章 两个面试案例
题目描述
牛客网
输入一个链表,反转链表后,输出新链表的表头。
解题思路
牛客网
初始化两个指针pre和head,分别指向None和头节点。循环判断head是否为空。
- head为空,退出循环,跳到步骤4;head不为空,用临时变量next保存head的下一个节点,next = head.next;
- 将pre节点赋值给head.next,使得head指向pre,这样就翻转了一个节点指向;
- 将pre指向head,head指向临时变量next的节点,回到步骤1;
- 返回pre节点。
实战
# 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