LeetCode #206 链表反转
Posted 三笠·阿卡曼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode #206 链表反转相关的知识,希望对你有一定的参考价值。
经典题目,直接贴代码
package com.vleus.algorithm.linked_list;
/**
* @author vleus
* @date 2021年05月15日 12:08
*/
public class ReverseLinkedList {
//迭代法解决
public ListNode reverseList1(ListNode head) {
// 定义两个指针指向当前访问的节点以及上一个节点
ListNode curr = head;
ListNode prev = null;
// 依次迭代链表中的节点,将next指针指向prev
while (curr != null) {
// 临时保存当前节点的下一个节点
ListNode tempNext = curr.next;
curr.next = prev;
//更新指针,当前指针变为之前的next,上一个指针指向curr
prev = curr;
curr = tempNext;
}
return curr;
}
//方法二: 递归实现
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
//递归调用,翻转剩余所有节点
ListNode restHead = head.next;
ListNode reversedRest = reverseList(restHead);
//倒数第二个节点就是restHead
restHead.next = head;
head.next = null;
return reversedRest;
}
}
以上是关于LeetCode #206 链表反转的主要内容,如果未能解决你的问题,请参考以下文章
剑指offerJZ15——反转链表。leetcode206.反转链表