leetcode-206-反转链表

Posted nxzblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-206-反转链表相关的知识,希望对你有一定的参考价值。

问题:

技术图片

 

package com.example.demo;

public class Test206 

    /**
     * 翻转链表
     * 方法一:迭代
     * 思路:
     * 每次循环的时候交换两个节点
     *
     * @param head
     * @return
     */
    public ListNode reverseList(ListNode head) 
        // 构建一个新的链表
        ListNode pre = null;
        ListNode cur = head;
        while (cur != null) 
            // 将当前处理节点的下一个节点暂存(也就是分开当前节点和下一个节点 2  3->4->5)
            ListNode next = cur.next;
            // 将当前节点赋给新链表 , 2->1
            cur.next = pre;
            // 重新覆盖新链表
            pre = cur;
            // 处理下一个节点
            cur = next;
        
        return pre;
    

    /**
     * 方法二:递归
     */
    public ListNode reverseList1(ListNode head) 
        if (head == null || head.next == null) 
            return head;
        
        ListNode p = reverseList(head.next);
        head.next.next = head;
        head.next = null;
        return p;
    


    public class ListNode 
        int val;
        ListNode next;

        ListNode(int x) 
            val = x;
        
    

 

以上是关于leetcode-206-反转链表的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript 刷题] 链表 - 反转链表, leetcode 206

[JavaScript 刷题] 链表 - 反转链表, leetcode 206

每天一道面试题LeetCode 206 -- 反转链表

图解 LeetCode206:反转吧,链表!

图解 LeetCode206:反转吧,链表!

LeetCode206. 反转链表