Leetcode 206.反转链表(双指针迭代法和递归操作)
传送门:力扣
双指针迭代:pre指向NULL,cur指向head,while循环不断移动cur和pre,并且把cur->next赋给temp暂时保存,然后让cur指向pre,重复操作直到pre到尾节点,cur为NULL.达成目的
递归处理:递归其实和迭代类似,只要传参正确就可以达到节省语句的效果,(看起来也挺装逼的)
详细代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
struct ListNode {int val;ListNode* next;ListNode(int v) :val(v), next(NULL) {}
};
class Solution {
public://迭代版本ListNode* reverseList(ListNode* head) {ListNode* cur = head;ListNode* pre = NULL;while (cur) {ListNode* tmp = cur->next;//保存后节点,之后要覆盖。cur->next = pre;pre = cur;//pre向后移动一格cur = tmp;//得到之前保存的cur.next}return pre;//此时pre位于前链表的最后位置,新链表的头位置。}//递归版本ListNode* reverse(ListNode* prev, ListNode* cur) {if (cur == NULL)return prev;//归ListNode* tmp = cur->next;cur->next = prev;// 可以和双指针法的代码进行对比,如下递归的写法,其实就是做了这两步// prev = cur;// cur = tmp;return reverse(cur, tmp);}ListNode* reverseList(ListNode* head) {// 和双指针法初始化是一样的逻辑// ListNode* cur = head;// ListNode* pre = NULL;return reverse(NULL,head);}
};
Leetcode 206.反转链表(双指针迭代法和递归操作)相关推荐
- LeetCode 206. 反转链表 Reverse Linked List
5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...
- 【LeetCode】【HOT】206. 反转链表(迭代/递归)
[LeetCode][HOT]206. 反转链表 文章目录 [LeetCode][HOT]206. 反转链表 package hot;import java.util.Arrays;class Lis ...
- LeetCode 206. 反转链表(Reverse Linked List) 16
206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...
- LeetCode 206. 反转链表
206. 反转链表 难度 简单 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输 ...
- LeetCode 206. 反转链表 双指针法 辅助结点 递归
题目链接 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 进阶: ...
- LeetCode 206. 反转链表 思考分析
题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可 ...
- leetcode - 206. 反转链表
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...
- leetcode206题:反转链表(迭代或是递归)
题目描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思 ...
- [leetcode] 206.反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输 ...
最新文章
- component-scan和annotation-driven
- 你真的会用java注解吗?
- Java运行时动态加载类之ClassLoader方法带参数
- 实战 :为自己的公号搭建一个数据运营指标体系
- .Net之微信小程序获取用户UnionID
- anki卡片重复_如何在Anki中使用间隔重复来学习更快的编码
- 210 - Concurrency Simulator
- php mssql扩展SQL查询中文字段名解决方法
- html盒子如何左对齐,【图片】怎么才能让盒子里的LI标签在实现的时候左对齐?在线等急!!!!【web前端开发吧】_百度贴吧...
- java jcmd,jcmd命令用法
- phalapi 数据库锁_2.5 PhalApi 连接多个数据库
- Java源文件编译出错:类文件包含错误的类 请删除该文件或确保文件位于正确的类路径子目录中
- 【Windows】网线直连实现两台电脑共享文件夹
- React18正式版发布,未来发展趋势是?
- 练习:编写程序判断当前系统状态
- Plague Inc
- Freebsd 8.4 Vmware 安装及软件配置
- 证明当x趋向于0时1-cosx的等价无穷小是(x^2/2)
- 一个很强的数据字典工具
- Quartz定时调度
热门文章
- 对象和json相互转换
- 企业如何从 0 到 1 构建整套全链路追踪体系
- 一文搞懂物联网Modbus通讯协议
- 千亿级的数据难题,优酷工程师怎么解决?
- 阿里CTO:阿里所有技术和产品输出都将必须通过阿里云进行
- Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造
- 【公测中】阿里云发布国内首个大数据双活容灾服务,满足高要求大数据灾备场景
- 走进新华三解决方案 360°业务能力中心,读懂新华三如何助力企业数字化转型
- Redis 会遇到的「坑」,你踩过几个?
- 稳定、可扩展、模块化、简化部署过程、版本控制……一文看懂 Kubernetes 到底如何运用!...