剑指 Offer II 024. 反转链表
创始人
2024-06-01 00:24:47

题目链接

剑指 Offer II 024. 反转链表 easy

题目描述

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

示例 1:

在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:

这里是引用

输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

提示:

  • 链表中节点的数目范围是 [0,5000][0, 5000][0,5000]
  • −5000≤Node.val≤5000-5000 \leq Node.val \leq 5000−5000≤Node.val≤5000

分析:模拟

我们用 cur指向 当前结点 ,用 pre指向当前结点的 前驱节点 , 用 nextNode指向当前结点的 后继结点

在这里插入图片描述
cur的下一个结点指向 pre。接着再让 pre指向当前结点 cur,让cur指向 nextNode

在这里插入图片描述

一直这样操作,直到 cur指向 null此时的 pre指向的就是反转后的链表头节点,直接返回即可。

时间复杂度: O(n)O(n)O(n)

C++代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode *pre = nullptr , *cur = head;while(cur != nullptr){ListNode *nextNode = cur->next;cur->next = pre;pre = cur;cur = nextNode;}return 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: ListNode) -> ListNode:pre , cur = None , headwhile cur != None:nextNode = cur.nextcur.next = prepre = curcur = nextNodereturn pre

相关内容

热门资讯

投资者提问:请问董秘,当前中日... 投资者提问:请问董秘,当前中日关系陷入僵局乃至谷底之际,公司有规划更多使用国产光刻胶等材料来替代日系...
富德生命人寿咸阳中心支公司被罚... 12月16日金融一线消息,据咸阳金融监管分局行政处罚信息公开表显示,富德生命人寿保险股份有限公司咸阳...
市场监管总局:抓紧推进出台《互... 转自:北京日报客户端记者16日从市场监管总局获悉,市场监管总局正抓紧推进《互联网平台反垄断合规指引》...
天奇股份:锂电循环业务夯实产业... 12月16日,江西天奇金泰阁集团(简称“天奇金泰阁”)资本赋能发展大会在江西龙南举行。会上,天奇股份...
「侠客岛」他们用上了“AI分身...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:海外网)来源...