leetcode算法206.反转链表

Posted 学无止境小奇

tags:

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

👏👏👏

哈喽!大家好,我是【学无止境小奇】,一位热爱分享各种技术的博主!😍😍😍

⭐【学无止境小奇】的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过。✊✊✊

⭐【学无止境小奇】的博客中所有涉及命令、代码的地方,除了提供图片供大家参考,另外会在图片下方提供一份纯文本格式的命令或者代码方便大家粘贴复制直接执行命令或者运行代码。🤝🤝🤝

⭐如果你对技术有着浓厚的兴趣,欢迎关注【学无止境小奇】,欢迎大家和我一起交流。😘😘😘

❤️❤️❤️感谢各位朋友接下来的阅读❤️❤️❤️

文章目录

一、leetcode算法

1、反转链表

1.1、题目

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

示例 1:

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

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

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

1.2、思路

思路一:此题我们使用迭代的方式将每一个节点进行变化,首先要定义好当前节点,前一个节点,下一个节点都是谁,然后将他们进行一个值的转换。

1.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) 
        //定义前一个节点
        ListNode prev = null;
        //定义当前节点
        ListNode curr = head;
        //判断当前节点不为空
        while(curr != null)
            //保存下一个节点,防止当前节点指向前一个节点后,下一个节点找不到
            ListNode next = curr.next;
            //将当前节点指向前一个节点
            curr.next = prev;
            //将前一个节点定义为当前节点
            prev = curr;
            //将当前节点定义为下一个节点
            curr = next;
        
        return prev;
    

复杂度分析

时间复杂度:O(n),其中 n 是链表的长度。需要遍历链表一次。

空间复杂度:O(1)。

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

LeetCode - #206 反转链表(Top 100)

算法-206. 反转链表

LeetCode Java刷题笔记—206. 反转链表

LeetCode Java刷题笔记—206. 反转链表

算法热门:反转单链表(LeetCode 206)解法二

Java算法 每日一题 编号206:反转链表