• leetcode 206. Reverse Linked List 反转链表(简单)


    一、题目大意

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

    示例 1:

    输入:head = [1,2,3,4,5]
    输出:[5,4,3,2,1]
    示例 2:

    输入:head = [1,2]
    输出:[2,1]
    示例 3:

    输入:head = []
    输出:[]

    提示:

    链表中节点的数目范围是 [0, 5000]
    -5000 <= Node.val <= 5000

    进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/reverse-linked-list
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    二、解题思路

    用迭代和递归来实现,迭代思路:在原镮之前建立一个空的prev节点,因为首节点会变,从head开始,将之后的一个节点移到prev之后,重复此操作直到head成为末节点为止

    递归思路:终止条件head为空,定义一个节点prev作为返回链表,每次将旧链表的head的下一个元素指向到prev,这样旧链表原来的下一个元素作为head,旧链表的head作为prev来调用递归函数

    三、解题方法

    3.1 Java实现-迭代

    /**
     * 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; }
     * }
     */
    class Solution {
        public ListNode reverseList(ListNode head) {
            ListNode prev = null;
            ListNode next;
            while (head != null) {
                next = head.next;
                head.next = prev;
                prev = head;
                head = next;
            }
            return prev;
        }
    }
    

    3.2 Java实现-递归

    public class Solution2 {
        public ListNode reverseList(ListNode head) {
            ListNode prev = null;
            return reverseList(head, prev);
        }
    
        public ListNode reverseList(ListNode head, ListNode prev) {
            if (head == null) {
                return prev;
            }
            ListNode next = head.next;
            head.next = prev;
            return reverseList(next, head);
        }
    }
    

    四、总结小记

    • 220901 9月第1天
  • 相关阅读:
    【转】ios输入框被键盘挡住的解决办法
    【转】操作系统Unix、Windows、Mac OS、Linux的故事
    mac 下删除非空文件夹
    解决Win7 64bit + VS2013 使用opencv时出现提“应用程序无法正常启动(0xc000007b)”错误
    图的邻接表表示
    图的邻接矩阵表示
    并查集
    05-树9 Huffman Codes及基本操作
    05-树7 堆中的路径
    堆的操作集
  • 原文地址:https://www.cnblogs.com/okokabcd/p/16647765.html
Copyright © 2020-2023  润新知