题目地址(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)相关推荐

  1. LeetCode206:Reverse Linked List

    Reverse a singly linked list. 分别用迭代和递归实现 struct ListNode {int val;struct ListNode *next; }; 迭代实现: st ...

  2. 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 ...

  3. LeetCode 206 Reverse Linked List--反转链表--迭代与递归解法--递归使用一个临时变量,迭代使用3个

    此题链接:Reverse Linked List - LeetCode Reverse a singly linked list. Example: Input: 1->2->3-> ...

  4. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  5. 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的链接列表反 ...

  6. Leetcode 206. Reverse Linked List

    Similar Questions Reverse Linked List II Binary Tree Upside Down Palindrome Linked List 思路:链表反转. 解法一 ...

  7. leetCode 206. Reverse Linked List 反转链表

    206. Reverse Linked List Reverse a singly linked list. 反转一个链表. 思路: 采用头插法,将原来链表重新插一次返回即可. 代码如下: /*** ...

  8. LeetCode Notes_#206 Reverse Linked List(C++,Python)

    LeetCode Notes_#206 Reverse Linked List(C++,Python) LeetCode Linked List  Contents 题目 思路 思考 解答 C++ P ...

  9. 反转链表 Reverse Linked List

    2018-09-11 22:58:29 一.Reverse Linked List 问题描述: 问题求解: 解法一:Iteratively,不断执行插入操作. public ListNode reve ...

最新文章

  1. 数据预处理--噪声_为什么数据对您的业务很重要-以及如何处理数据
  2. 为何从单体架构迁移到微服务这么难?
  3. 老鼠之Atlas之旅(一):Atlas官方站点
  4. 视频质量评估的新方式:VMAF百分位数
  5. 第3课 天安门广场 《小学生C++趣味编程》--C++、Scratch
  6. wps怎么投递简历发到boss直聘_BOSS直聘角逐招聘季:装机量、下载增量、增长率三料冠军...
  7. SpringCloud和SpringBoot组件对比
  8. .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法
  9. 2012年全国最新Android开发工程师薪资水平调查分析
  10. 通过servlet来实现对Mysql进行连接、插入、修改、删除操作
  11. Spark快速大数据分析——Spark的Hadoop配置(肆)
  12. STC15单片机学习笔记1——STC15W4K56S4引脚功能整理说明
  13. 一个按键控制数码管的开和关_按键控制数码管显示
  14. ARM920T的MMU与Cache ——转载
  15. 中国超级计算机之最,中国超级计算机神威太湖之光世界最快,且总量排名榜单第一...
  16. 锁定计算机 背景图片,win7系统电脑更换锁屏壁纸的方法
  17. dijkstra习题集
  18. 大学计算机应用基础屈立成,五笔字型输入法教程-计算机应用基础教学网.PDF
  19. c++ 字母a~z升序排列编号 字典序问题 递归
  20. 如何避免大数据简历一眼假,大数据简历硬伤详解

热门文章

  1. IIS-301永久重定向
  2. 关于 SET QUOTED_IDENTIFIER ON 和 SET ANSI_NULLS ON
  3. ASP.NET MVC 重点教程一周年版 第八回 Helper之演化
  4. 部署Symantec Antivirus 10.0网络防毒服务器之七
  5. mysql安装失败net_mysql安装后.net程序运行出错的解决方法
  6. 信息学奥赛一本通 1122:计算鞍点 | OpenJudge NOI 1.8 05:计算鞍点
  7. 信息学奥赛一本通(1037:计算2的幂)
  8. 一个数组分成两部分,让两部分的差最小
  9. 9.7 LSMW程序导出/导入操作手册-录屏
  10. python惰性求值效果_让Python中类的属性具有惰性求值的能力