LeetCode Java刷题笔记—206. 反转链表
2021/12/18 20:52:03
本文主要是介绍LeetCode Java刷题笔记—206. 反转链表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
该题在国内的常见算法面试题的出现次数中排第一,递归和非递归这两种方式都一定要掌握。
思路就是交换两个相邻节点的引用关系即可,使用双指针或者递归操作都可以实现,比较简单。注意理解递归的实现,我们返回的是链表的最后一个节点,也就是反转链表的头节点,都是在每次递归返回之后。
/** * 206. 反转链表 * 反转一个单链表。 * https://leetcode-cn.com/problems/reverse-linked-list/ * 简单 */ public class LeetCode206 { /** * 双指针 */ public ListNode reverseList(ListNode head) { //前驱 ListNode pre = null; while (head != null) { ListNode next = head.next; //反转head和pre的关系 head.next = pre; pre = head; head = next; } return pre; } /** * 递归 */ public ListNode reverseList1(ListNode head) { if (head == null || head.next == null) { //递归到最深入之后从这里开始返回 return head; } ListNode next = reverseList1(head.next); //递归方法返回后执行的步骤,反转引用关系 head.next.next = head; head.next = null; //返回之前链表的最后一个节点,也就是反转链表的头节点 return next; } 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; } }
这篇关于LeetCode Java刷题笔记—206. 反转链表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解