当前位置: 首页 > news >正文

LeetCode100之反转链表(206)--Java

1.问题描述

        给你单链表的头节点 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

        难度等级

                简单

        题目链接

2.解题思路

        这道反转链表的题目属于简单题目,我们就短话短说,快速解决吧。

        首先,判断链表是否为空或者只有一个元素,若链表为空或只有一个元素,直接返回即可。

        if(head == null || head.next == null){return head;}

        接着,我们就可以开始反转链表了。首先,我们需要定义一个指针来存储前一个节点,以及一个指针用来遍历当前节点。

        //前一个节点ListNode pre = null;//当前节点ListNode cur = head;

        我们反转的基本步骤:

        先用一个临时指针存储当前节点的下一个节点;

            //临时存储下一个节点ListNode temp = cur.next;

        然后将当前节点的next指针指向前一个节点;

            //修改当前节点的下一个节点为上一个节点cur.next = pre;

        再将前一个节点的指针指向当前节点;

            //更新上一个节点pre = cur;

        最后将当前指针更新为临时指针中存储的节点;

            //更新当前节点cur = temp;

        我们用一个while循环来遍历反转,直到反转到链表末尾为止。

        反转完成后,将新的链表头返回即可。

        return pre;

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 || head.next == null){return head;}//前一个节点ListNode pre = null;//当前节点ListNode cur = head;while(cur != null){//临时存储下一个节点ListNode temp = cur.next;//修改当前节点的下一个节点为上一个节点cur.next = pre;//更新上一个节点pre = cur;//更新当前节点cur = temp;}   return pre;}
}

4.总结

        这道题没啥好讲的,理解好反转链表的四个步骤,这道题就迎刃而解了。祝大家刷题愉快~

http://www.lryc.cn/news/486328.html

相关文章:

  • 牛客周赛第一题2024/11/17日
  • 麒麟Server下安装东方通TongLINK/Q
  • BERT的中文问答系统33
  • Ubuntu下的Eigen库的安装及基本使用教程
  • 【spring 】Spring Cloud Gateway 的Filter学习
  • 每秒交易数(Transactions Per Second:TPS)详细拆解
  • 【初阶数据结构与算法】链表刷题之链表分割、相交链表、环形链表1、环形链表I、环形链表II
  • 【STL】set,multiset,map,multimap的介绍以及使用
  • 新能源二手车交易量有望破百万,二手车市场回暖了吗?
  • 哈佛商业评论 | 项目经济的到来:组织变革与管理革新的关键
  • web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
  • 【GeekBand】C++设计模式笔记12_Singleton_单件模式
  • Pyhon基础数据结构(列表)【蓝桥杯】
  • Linux篇(权限管理命令)
  • 深入理解 Spark 中的 Shuffle
  • leetcode-8-字符串转整数
  • SQL注入注入方式(大纲)
  • OpenCV基础(1)
  • 【freertos】FreeRTOS信号量的介绍及使用
  • React Native 全栈开发实战班 - 图片加载与优化
  • Golang云原生项目:—实现ping操作
  • mysql如何查看当前事务的事务id
  • 在linux里如何利用vim对比两个文档不同的行数
  • 深入解析Python中的逻辑回归:从入门到精通
  • 【数据库】mysql数据库迁移前应如何备份数据?
  • C语言——鸡兔同笼问题
  • 数据结构王道P234第二题
  • 层归一化和批归一化
  • Spring Cloud Gateway 网关
  • LabVIEW中的UDP与TCP比较