【每日一题】LeetCode——反转链表
作者:mmseoamin日期:2024-03-04

【每日一题】LeetCode——反转链表,在这里插入图片描述,第1张

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!

【每日一题】LeetCode——反转链表,第2张

文章目录

  • 1. 题目描述
    • 示例1
    • 示例2
    • 示例3
    • 提示
    • 2. 思路
    • 3.代码

      1. 题目描述

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

      示例1

      【每日一题】LeetCode——反转链表,img,第3张

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

      输出:[5,4,3,2,1]

      示例2

      【每日一题】LeetCode——反转链表,img,第4张

      输入:head = [1,2]

      输出:[2,1]

      示例3

      输入:head = [ ]

      输出:[ ]

      提示

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

        题目链接

        2. 思路

        1. 判断链表是否为空,如果为空直接返回头结点

        2. 判断链表是否为一个元素,如果是直接返回头结点

        3. 将head置为null

        4. 定义两个指针,cur和curNext,cur 指向头结点的next,表示要反转的元素;curNext指向cur的next,表示要反转元素的下一个元素

        5. 使用头插法将要反转的元素插入前一个元素的前面

          【每日一题】LeetCode——反转链表,image-20231218095202374,第5张

        3.代码

        /**
         * 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) {
                if (head == null) { // 链表里一个元素都没有
                    return head;
                }
                if (head.next == null) { // 链表里只有一个元素
                    return head;
                }
                ListNode cur = head.next; // 要反转的元素
                head.next = null;
                while (cur != null) {
                    ListNode curNext = cur.next;
                    // 头插法
                    cur.next = head;
                    head = cur;
                    cur = curNext;
                }
                return head;
            }
        }
        

        运行结果:

        【每日一题】LeetCode——反转链表,image-20231218093949377,第6张

        【每日一题】LeetCode——反转链表,在这里插入图片描述,第7张