LeetCode206 | Reverse Linked List (Easy)
题目地址(206. 反转链表)
https://leetcode-cn.com/problems/reverse-linked-list/
题目描述
反转一个单链表。示例:输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
前置知识
- 构造函数
// Definition for singly-linked list.
public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
思路
- 思路一:头插法(迭代)
- 思路二:递归
关键点
- 可以尝试画图理清节点与节点之间的关系
a = b;
a = b.next;
a.next = b;
a.next = b.next;
代码
- 语言支持:Java
Java Code:
方法一:头插法(迭代)
class Solution {public ListNode reverseList(ListNode head) {ListNode newHead = new ListNode(-1);while (head != null) {ListNode next = head.next;head.next = newHead.next;newHead.next = head;head = next;}return newHead.next;}
}
复杂度分析
令 n 为数组长度。
- 时间复杂度:O(n)O(n)O(n)
- 空间复杂度:O(n)O(n)O(n)
起始状态
1.定义newHead
ListNode newHead = new ListNode(-1);
2.定义next
next = head.next;
3.第一个节点指向null
head.next = newHead.next;
4.newHead指向头节点
newHead.next = head;
5.head往后移动
head = next;
next = head.next;
全过程
public ListNode reverseList(ListNode head) {ListNode newHead = new ListNode(-1);while (head != null) {ListNode next = head.next;head.next = newHead.next;newHead.next = head;head = next;}return newHead.next;
}
方法二:递归
public ListNode reverseList(ListNode head) {if (head == null || head.next == null) {return head;}ListNode next = head.next;ListNode newHead = reverseList(next);next.next = head;head.next = null;return newHead;
}
LeetCode206 | Reverse Linked List (Easy)相关推荐
- LeetCode206:Reverse Linked List
Reverse a singly linked list. 分别用迭代和递归实现 struct ListNode {int val;struct ListNode *next; }; 迭代实现: st ...
- LeetCode 92. Reverse Linked List II--Python 解法--反转部分链表--笔试算法题
题目地址:Reverse Linked List II - LeetCode Reverse a linked list from position m to n. Do it in one-pass ...
- 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) 16
206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...
- LeetCode 92. Reverse Linked List II
92. Reverse Linked List II Reverse a linked list from position m to n. Do it in one-pass. 将位置m的链接列表反 ...
- Leetcode 206. Reverse Linked List
Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List 思路:链表反转. 解法一 ...
- leetCode 206. Reverse Linked List 反转链表
206. Reverse Linked List Reverse a singly linked list. 反转一个链表. 思路: 采用头插法,将原来链表重新插一次返回即可. 代码如下: /*** ...
- LeetCode Notes_#206 Reverse Linked List(C++,Python)
LeetCode Notes_#206 Reverse Linked List(C++,Python) LeetCode Linked List Contents 题目 思路 思考 解答 C++ P ...
- 反转链表 Reverse Linked List
2018-09-11 22:58:29 一.Reverse Linked List 问题描述: 问题求解: 解法一:Iteratively,不断执行插入操作. public ListNode reve ...
最新文章
- 数据预处理--噪声_为什么数据对您的业务很重要-以及如何处理数据
- 为何从单体架构迁移到微服务这么难?
- 老鼠之Atlas之旅(一):Atlas官方站点
- 视频质量评估的新方式:VMAF百分位数
- 第3课 天安门广场 《小学生C++趣味编程》--C++、Scratch
- wps怎么投递简历发到boss直聘_BOSS直聘角逐招聘季:装机量、下载增量、增长率三料冠军...
- SpringCloud和SpringBoot组件对比
- .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法
- 2012年全国最新Android开发工程师薪资水平调查分析
- 通过servlet来实现对Mysql进行连接、插入、修改、删除操作
- Spark快速大数据分析——Spark的Hadoop配置(肆)
- STC15单片机学习笔记1——STC15W4K56S4引脚功能整理说明
- 一个按键控制数码管的开和关_按键控制数码管显示
- ARM920T的MMU与Cache ——转载
- 中国超级计算机之最,中国超级计算机神威太湖之光世界最快,且总量排名榜单第一...
- 锁定计算机 背景图片,win7系统电脑更换锁屏壁纸的方法
- dijkstra习题集
- 大学计算机应用基础屈立成,五笔字型输入法教程-计算机应用基础教学网.PDF
- c++ 字母a~z升序排列编号 字典序问题 递归
- 如何避免大数据简历一眼假,大数据简历硬伤详解
热门文章
- IIS-301永久重定向
- 关于 SET QUOTED_IDENTIFIER ON 和 SET ANSI_NULLS ON
- ASP.NET MVC 重点教程一周年版 第八回 Helper之演化
- 部署Symantec Antivirus 10.0网络防毒服务器之七
- mysql安装失败net_mysql安装后.net程序运行出错的解决方法
- 信息学奥赛一本通 1122:计算鞍点 | OpenJudge NOI 1.8 05:计算鞍点
- 信息学奥赛一本通(1037:计算2的幂)
- 一个数组分成两部分,让两部分的差最小
- 9.7 LSMW程序导出/导入操作手册-录屏
- python惰性求值效果_让Python中类的属性具有惰性求值的能力