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

算法通过村第二关-链表白银笔记

文章目录

  • 再战链表|反转链表
    • 剑指 Offer II 024. 反转链表
    • 熟练掌握这两种解法
      • 建立头节点的解决思路
      • 不采用建立头节点的方法
      • 采用循环/递归的方式解决
  • 总结


再战链表|反转链表

提示:多拿些酒来,因为生命只有乌有。


剑指 Offer II 024. 反转链表

在这里插入图片描述

在这里插入图片描述
如果不使用链表的话,很快就能让他反转,不过也没有那么简单(用链表的话🥰)

熟练掌握这两种解法

建立头节点的解决思路

拿到题目,想一想怎么处理最好💡
那我们就先画个图吧💕
在这里插入图片描述
再来个过程图,这让就看的懂了:

在这里插入图片描述

  1. 建立一个头节点指向 1
  2. cur 直线待处理的头节点
  3. next 直线cur 的下一个节点

我们尝试写一下代码👌
重点理解一下 图
在这里插入图片描述

/*** 方法1:虚拟结点 ,并复用已有的结点** @param head* @return*/
public static ListNode reverseListByDummyNotCreate(ListNode head) {if(head == null){return null;}ListNode ans = new ListNode(-1);ListNode cur = head;while(cur != null){ListNode next = cur.next; // 所以这里 需要保留一下cur后面的节点// ans.next = cur.next;// ans.next = cur;   不能这样写cur.next = ans.next;  // 改变当前节点的指针域 也就是说 现在cur后面的已经断了// 现在可以说 有两个指针指向 ans 的下一个节点ans.next = cur; // 更改指针域  下一个 ans 就不指向头节点了cur = next;  // 修改cur当前节点  进行下一次循环}return ans.next;
}

这个是经典的解决方法,很常用,一定要数量掌握。

不采用建立头节点的方法

因为上面的方法更容易想到,一般面试官也不建议使用头节点😒,不使用头节点更体现你对链表的熟悉程度。
那我们就来挑战一下😁:
我们梳理一下思路:
先画个图hahah😁
在这里插入图片描述
注意:链表的结构
我们来看一下执行期间的流程图:

  1. 开始prev指向null cur 指向头节点 next 指向下一个节点
  2. 这样从cur 开始把链表切成两段 修改cur后面的指针域
  3. cur.next = pre; pre = cur; cur = next; 完成替换

在这里插入图片描述
注意:上面👆的代码太重要了,建议理解的基础上,刻在骨子里,以后用的地方很多。

采用循环/递归的方式解决

这个放到后面解决,目前先不讨论。


总结

这里最主要的是掌握链表反转,【不带头节点的】⭐

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

相关文章:

  • 力扣题库刷题笔记75--颜色分类
  • 《面试1v1》如何提高远程用户的吞吐量
  • 论文笔记--Distilling the Knowledge in a Neural Network
  • Mac上安装sshfs
  • MQ公共特性介绍 (ActiveMQ, RabbitMQ, RocketMQ, Kafka对比)
  • 灵雀云Alauda MLOps 现已支持 Meta LLaMA 2 全系列模型
  • 技术方案模版
  • 【Linux命令200例】cut强大的文本处理工具
  • 《论文阅读》具有特殊Token和轮级注意力的层级对话理解 ICLR 2023
  • C# 定时器封装版
  • 前端学习——Vue (Day4)
  • 如果你是一个嵌入式面试官,你会问哪些问题?
  • 学习笔记十三:云服务器通过Kubeadm安装k8s1.25,供后续试验用
  • 【Maven】Maven配置国内镜像
  • ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?
  • pg_standby备库搭建
  • RNNLSTM
  • 到底什么是前后端分离
  • 【React】精选5题
  • MUR2080CT- ASEMI二极管的特性和应用
  • 安全测试国家标准解读——资源管理和内存管理
  • 3D元宇宙游戏,或许能引爆新的文娱消费增长点
  • (学习笔记-IP)IP基础知识
  • 神经数据库:用于使用 ChatGPT 构建专用 AI 代理的下一代上下文检索系统 — (第 2/3 部分)
  • 一文6个概念从0到1带你成功入门自动化测试【0基础也能看懂系列】
  • C++OpenCV(5):图像模糊操作(四种滤波方法)
  • 关于质数筛——数论
  • Spring Boot 应用程序生命周期扩展点妙用
  • 【Nodejs】操作mongodb数据库
  • SQL-每日一题【619.只出现一次的最大数字】