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

【力扣】206.反转链表

206.反转链表

这道题有两种解法,但不只有两种,嘿嘿。

法一:迭代法

就是按循序遍历将每一个指针的指向都给改了。比如说1——>2——>3改为null<——1<——2<——3这样。那这里以第二个结点为例,想一想。我想要指向本身的指针改为指向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) {//1、迭代//pre用于存储当前结点的前一个结点ListNode pre=null;ListNode curr=head;while(curr!=null){//next指针用于存储当前结点的后一个结点ListNode next=curr.next;curr.next=pre;pre=curr;curr=next;}return pre;}
}

法二:递归

这个我比较喜欢。

题解:

用递归,直到当前结点p,的p-next=null则返回其本身。然后回到上一个结点。

        head.next.next=head;

        head.next=null;

这两行代码的作用在于将当前结点的p-next=null,同时将当前结点的下一个结点的next指向本身,将箭头调换,指向自己,但不是自杀,只是为了完成任务而已(开个玩笑)。

我觉得可能会卡在对递归的理解,多多刷题,多多思考,相信自己,就ok了。

代码:

/*** 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) {//2、递归if(head==null||head.next==null){return head;}ListNode newHead=reverseList(head.next);//反转吧head.next.next=head;head.next=null;return newHead;}
}

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

相关文章:

  • Python:核心知识点整理大全7-笔记
  • Hadoop学习笔记(HDP)-Part.15 安装HIVE
  • 【力扣100】4.移动零
  • Filebeat使用指南
  • 【Vue2】Vue的介绍与Vue的第一个实例
  • 十五届蓝桥杯分享会(一)
  • 原生video设置控制面板controls显示哪些控件
  • openlayers地图使用---跟随地图比例尺动态标绘大小的一种方式2
  • C语言期末考试复习PTA数据类型及表达式-分支结构程序-循环结构-数组经典选择题
  • RHEL8_Linux访问NFS存储及自动挂载
  • python 使用 AppiumService 类启动appium server
  • HbuilderX使用Uniapp+Vue3安装uview-plus
  • 【Android】Java NIO(New I/O)的`Selector`类来实现非阻塞的Socket监听
  • 『亚马逊云科技产品测评』在当前飞速发展的AI人工智能时代云服务技术哪家强?
  • 经典神经网络——ResNet模型论文详解及代码复现
  • OpenCV-Python:DevCloud CodeLab介绍及学习
  • 如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问
  • C语言入门课程之课后习题之折半查找法
  • 【CSP】202209-1_如此编码Python实现
  • std::function
  • SQL Server——权限管理
  • 实例解析关于兔鲜登录tab栏切换案例详细讲解!
  • 制作一个RISC-V的操作系统三-编译与链接
  • tmux工具--程序部署在服务器上持久化执行
  • C语言精选——选择题Day39
  • React 笔记 jsx
  • QMenu风格设计qss+阴影
  • temu防窒息警示语贴哪里
  • Maven——坐标和依赖
  • Python中事务的常见用法