• 【LeetCode】206. 反转链表


    206. 反转链表

    难度:简单

    题目

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

    示例 1:

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

    示例 2:

    输入:head = [1,2]
    输出:[2,1]
    
    • 1
    • 2

    示例 3:

    输入:head = []
    输出:[]
    
    • 1
    • 2

    提示:

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

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

    个人题解

    思路:

    1. 用两个变量反转即可
    /**
     * 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 pre = null, cur = head;
            while (cur != null) {
                ListNode next = cur.next;
                cur.next = pre;
                pre = cur;
                cur = next;
            }
            return pre;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    官方题解

    方法一:迭代
    class Solution {
        public ListNode reverseList(ListNode head) {
            ListNode prev = null;
            ListNode curr = head;
            while (curr != null) {
                ListNode next = curr.next;
                curr.next = prev;
                prev = curr;
                curr = next;
            }
            return prev;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    方法二:递归
    class Solution {
        public ListNode reverseList(ListNode head) {
            if (head == null || head.next == null) {
                return head;
            }
            ListNode newHead = reverseList(head.next);
            head.next.next = head;
            head.next = null;
            return newHead;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    作者:力扣官方题解
    链接:https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    数据可视化——根据提供的数据,将数据经过处理后以折线图的形式展现
    bbs项目解读
    详解kubernetes备份恢复利器 Velero | 深入了解Carina系列第三期
    互联网应用主流框架整合之SpringMVC基础组件开发
    RSA加密算法
    概率论_复习_第6章:数理统计的基本概念
    JavaSE——IO流总结
    机器学习助力基于优化理论的TDOA无源定位
    UI布局:Margin和absolute的区别
    UDS协议发展历史
  • 原文地址:https://blog.csdn.net/xxx1276063856/article/details/134452905