[LeetCode] [C++] 206 Reverse Linked List 反转单项链表
题目要求
Reverse a singly linked list.
LeetCode 206在线测试
问题描述
给定一个单项链表,将其反转后返回链表头节点。
思路分析1
可以完整的遍历一遍链表,将链表的每个节点的值存在数组中,然后反向遍历数组重新生存一个新
链表。这样做需要有O(N)的空间复杂度
代码验证1
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {if (head == NULL || head->next == NULL) {return head;}vector<int> nodeVals;for (ListNode* p = head; p != NULL; p = p->next) {nodeVals.push_back(p->val);}ListNode* pNewHead = NULL;ListNode* pTail = NULL;for (int i = nodeVals.size() - 1; i >= 0; --i) {ListNode* pNew = new ListNode(nodeVals[i]);if (pTail == NULL) {pNewHead = pNew;pTail = pNew;} else {pTail->next = pNew;pTail = pNew;}}return pNewHead;}
};
思路分析2
遍历一次链表,每次遍历到其中一个节点时,尝试将它链表指向改变,改成指向他前一个节点,
原来链表的首节点比较特殊,需要将它的下一个指向NULL。
具体的操作流程如下图所示:
代码验证2
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {if (head == NULL || head->next == NULL) {return head;}ListNode* pre = head;pre->next = NULL;ListNode* cur = head->next;ListNode* next = NULL;while (cur != NULL) {next = cur->next;cur->next = pre;pre = cur;cur = next;}return pre;
};
总结注意
反转链表时,可以针对当前遍历到的节点,改变当前节点的next指针指向,实现反转当前
节点的效果。而当每个节点都执行相同的操作时,就可以实现反转整条单项链表的目的
原创声明
作者:hgli_00
链接:http://www.cnblogs.com/lihuagang/p/leetcode_206.html
来源:博客园
著作权归作者所有,转载请联系作者获得授权。
转载于:https://www.cnblogs.com/lihuagang/p/leetcode_206.html
[LeetCode] [C++] 206 Reverse Linked List 反转单项链表相关推荐
- LeetCode Notes_#206 Reverse Linked List(C++,Python)
LeetCode Notes_#206 Reverse Linked List(C++,Python) LeetCode Linked List Contents 题目 思路 思考 解答 C++ P ...
- leetCode 206. Reverse Linked List 反转链表
206. Reverse Linked List Reverse a singly linked list. 反转一个链表. 思路: 采用头插法,将原来链表重新插一次返回即可. 代码如下: /*** ...
- 206. Reverse Linked List
Reverse a singly linked list. 反转单链表 C++(9ms): 迭代 1 /** 2 * Definition for singly-linked list. 3 * s ...
- LeetCode 206 Reverse Linked List--反转链表--迭代与递归解法--递归使用一个临时变量,迭代使用3个
此题链接:Reverse Linked List - LeetCode Reverse a singly linked list. Example: Input: 1->2->3-> ...
- Leetcode 206. Reverse Linked List
Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List 思路:链表反转. 解法一 ...
- LeetCode算法题-Reverse Linked List(Java实现)
这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...
- LeetCode in Python-7. Reverse Integer 整数反转
Reverse Integer 整数反转 题目 解法1.利用数值反转数字 解法2.字符串反转 解法3. 出处 题目 解法1.利用数值反转数字 class Solution:def reverse(se ...
- leetcode python3 简单题206. Reverse Linked List
1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第二百零六题 (1)题目 英文: Reverse a singly linked l ...
- Java for LeetCode 206 Reverse Linked List
Reverse a singly linked list. 解题思路: 用Stack实现,JAVA实现如下: public ListNode reverseList(ListNode head) {i ...
最新文章
- 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
- jquery文档加载完毕后执行的几种写法
- 数据中心节能制冷---冷却塔帮忙
- 关于STL的一些笔记
- 透过现象看本质:Java类动态加载和热替换
- 浅谈如何提高自动化测试的稳定性和可维护性 (pytestallure)
- Java计划任务:ScheduledThreadPoolExecutor
- 【心电信号】基于matlab GUI心电信号数字滤波处理【含Matlab源码 484期】
- 前沿重器[25] | 聊聊对话系统:多轮对话
- 尼康数码相机照片数据恢复怎么办
- 【Python纪念册】哪些浪漫至极的表白程序—“你做我的男孩,我做你的宇宙”
- solidworks图纸模板添加_solidworks工程图模板制作教程(中)
- 数据治理成功要素篇1:数据战略管理
- rainyday.js 下雨效果插件使用方法
- 众里寻她千百度,wordperss 热键
- 转:乱谈Dotnet之武林秘籍
- 计算机网络汇聚层,【大白电气】接入层、汇聚层、核心层——中大型计算机网络系统结构介绍及交换机选型建议...
- 发生事故单位照常发工资可不可以索要误工费
- C/C++ 如何构造出强悍的宏
- 2021-2027全球与中国β-雌二醇 (CAS 50-28-2)市场现状及未来发展趋势