链表总结(2)


theme: fancy

又是链表专题啦,老样子,标题就是leetcode链接,在这里只放我的代码答案和注释

141环形链表

public class Solution {public boolean hasCycle(ListNode head) {if(head == null || head.next == null)   return false;if(head.next == head) return true;ListNode slow = head;ListNode fast = head.next;while(slow != fast) {slow = slow.next;fast = fast.next;if(fast == null)    break; fast = fast.next;if(fast == null)    break;  // 告诉我们每一步走的路都要检查一下if(slow == fast && fast != null) {return true;}}return false;}
}

142环形链表2

public class Solution {public ListNode detectCycle(ListNode head) {if(head == null || head.next == null)   return null;ListNode slow = head;ListNode fast = head.next;while(fast != null) {   // 这个判断条件很关键slow = slow.next;fast = fast.next;if(fast == null)    break; fast = fast.next;if(slow == fast) {slow = head;fast = fast.next;while(slow != fast) {  // 开始循环找到相遇的起始点slow = slow.next;fast = fast.next;}if(slow == fast) {return fast;}}}return null;}
}

21合并两个有序链表

class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {// 创建两个指针 cur 和 ans,ans 用于记录合并后链表的头部,cur 用于迭代操作ListNode cur = new ListNode(), ans = cur;// 循环直到 list1 和 list2 都遍历完while(list1 != null && list2 != null) {// 比较 list1 和 list2 当前节点的值,将较小值的节点接入合并后的链表if(list1.val > list2.val) {ans.next = list2;list2 = list2.next;} else {ans.next = list1;list1 = list1.next;}ans = ans.next; // 移动合并后链表的指针到下一个节点}// 处理某个链表遍历完后,将剩余未遍历完的链表直接接入合并后的链表末尾ans.next = list1 == null ? list2 : list1;return cur.next; // 返回合并后链表的头节点}
}

2两数相加

class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
/ 创建一个ArrayList来存储相加的结果  List<Integer> ans = new ArrayList<>();  // 当l1和l2都不为空时,进行相加操作  while(l1 != null && l2 != null) {  int a = l1.val;  // 获取l1的当前值  int b = l2.val;   // 获取l2的当前值  ans.add(a + b);    // 将a和b相加的结果添加到ans中  l1 = l1.next;       // 将l1移动到下一个节点  l2 = l2.next;        // 将l2移动到下一个节点  }  // 如果l1或l2有一个为空,另一个不为空,将非空链表的剩余部分添加到ans中  if(l1 != null || l2 != null) {  ListNode cur = (l1 == null ? l2 : l1);  // 确定非空链表的起始节点  while(cur != null) {  ans.add(cur.val);  // 将非空链表的剩余部分添加到ans中  cur = cur.next;    // 将cur移动到下一个节点  }  }  // 初始化结果链表的头节点res和尾节点res2  ListNode res = new ListNode();  ListNode res2 = res;  // res2用于返回结果链表的头节点,因为res可能被重新赋值  // 初始化进位标志go,初始值为0  int go = 0;  for(int i = 0; i < ans.size(); i ++) {  // 遍历ans中的每个数字  System.out.println(ans.get(i));  // 打印当前数字,用于调试或测试目的  int temp = go;  // 存储当前的进位值  go = 0;  // 重置进位值为0,因为当前数字已经处理完毕  if(ans.get(i) + temp > 9) {  // 如果当前数字加上之前的进位值大于9,需要进行进位处理  go ++;  // 进位值为1,因为需要向高位进位  temp += ans.get(i) - 10;  // 减去10是为了在下一次循环中处理进位后的数字部分  } else {  // 如果当前数字加上之前的进位值小于等于9,不需要进行进位处理  temp += ans.get(i);  // 将当前数字加到temp上,作为下一次循环处理的新数字的一部分  }  res.next = new ListNode(temp);  // 将temp作为新的节点添加到结果链表中  res = res.next;  // 将res移动到新添加的节点上,以便在下一次循环中处理下一个数字部分  }  if(go != 0) {  // 如果最终仍有进位,则添加一个值为1的节点到结果链表的末尾(作为进位表示)  res.next = new ListNode(1);  // 将进位值1作为新的节点添加到结果链表的末尾(如果存在)  } else {  // 如果最终没有进位,则返回结果链表的头节点(即res2)作为最终结果链表的起始节点  return res2.next;  // 返回结果链表的头节点(即res2的下一个节点)作为最终结果链表的起始节点  }  }  

这里的注释是让文心一言帮我加的,老实说加的太多了太详细了。。。

19删除链表的倒数第 N 个结点

image.png

class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {if(head == null)    return head;ListNode cur = head;int size = 0;while(cur != null) {size ++;cur = cur.next;}if(n == size) return head.next;  // 这个是专门为了过特殊用例写的cur = new ListNode(-1, head);for(int i = 0;i < size - n;i ++) {cur = cur.next;}cur.next = cur.next.next;return head;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/585865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解FreeRTOS:FreeRTOSConfig.h系统配置文件(拓展篇—1)

目录 1、“INCLUDE_”宏 2、“config”宏 实际使用FreeRTOS的时候,时常需要根据自己需求来配置 FreeRTOS,不同架构的MCU,配置也不同。 FreeRTOS的系统配置文件为FreeRTOSConfig.h,在配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件,本篇博文就来讲解这…

鸿蒙HarmonyOS-带笔锋手写板(三)

笔者用ArkTS 写了一个简单的带笔锋的手写板应用&#xff0c;并且可以将手写内容保存为图片。 一、效果图 手写效果如下&#xff08;在鸿蒙手机模拟器上运行&#xff0c;手写时反应可能会有点慢&#xff09; 二、实现方法 参考文章&#xff1a; 支持笔锋效果的手写签字控件_a…

Shell脚本-bin/bash: 解释器错误: 没有那个文件或目录-完整路径执行-“/”引发的脑裂

引起该不适的一种可能以及解决方案&#xff0c;网上较多&#xff0c;比如&#xff1a; 但按以上方式操作&#xff0c;并经过查看&#xff0c;发现仍然未能解决问题。 因为两种方式执行&#xff0c;有一种能成功&#xff0c;有一种不能&#xff0c;刚开始未怀疑是文件问题&…

宠物救助上门喂养系统宠物领养宠物寄养寻宠小程序宠物社区系统宠物托运宠物殡葬源码

后端php 前端uniapp mysql数据库 主要功能介绍&#xff1a; 1.根据当前位置 支持多城市切换 2.支持首页公告实时显示 3.支持 宠物救助&#xff0c;上门喂养&#xff0c;宠物领养&#xff0c;宠物寄养&#xff0c;寻宠&#xff0c;宠物社区&#xff0c;宠物托运&#xff…

【node-express】在commonjs的项目中使用esm和ts开发的sdk

在commonjs的项目中使用esm和ts开发的sdk 效果实现步骤 效果 在一些demo中, 大部分代码是commonjs规范开发的&#xff0c;但是要用到的sdk是ts开发的并且仅支持esm&#xff0c; 又不想配置很复杂的工程项目&#xff0c;可以这么做。如果你有更好的建议&#xff0c;希望能得到你…

学习笔记13——Spring整合Mybatis、junit、AOP、事务

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/ Mybatis - Spring&#xff08;使用第三方包new一个对象bean&#xff09; 原始的Mybatis与数据库交互【通过sqlmapconfig来配置和连接】 初始化SqlSessionFactory获得连接获取数据层接口…

FairyGUI-Cocos Creator官方Demo源码解读

博主在学习Cocos Creator的时候&#xff0c;发现了一款免费的UI编辑器FairyGUI。这款编辑器的能力十分强大&#xff0c;但是网上的学习资源比较少&#xff0c;坑比较多&#xff0c;主要学习方式就是阅读官方文档和练习官方Demo。这里博主进行官方Demo的解读。 从gitee上克隆项目…

超实用!CSDN个人数据Chrome插件开发

插件简介 相信写过博客的都知道&#xff0c;每天会经常打开自己的主页无数次&#xff0c;尤其是写了一篇新文章&#xff0c;就为了看文章浏览量增长了多少&#xff0c;文章获得了多少个赞&#xff0c;有多少人评论&#xff08;谁不想自己写的文章成为爆款呢&#xff5e;&#…

基于Java学生成绩管理系统设计与实现(源码+部署文档+报告)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

【JavaEE进阶】 初识Spring Web MVC

文章目录 &#x1f334;什么是Spring Web MVC&#xff1f;&#x1f6a9;什么是Servlet呢? &#x1f38b;MVC 定义&#x1f6a9;再理解Spring MVC &#x1f340;如何学习Spring MVC呢&#xff1f;⭕总结 &#x1f334;什么是Spring Web MVC&#xff1f; Spring Web MVC 是基于…

C编程指针篇----包括历年真题

一&#xff0c;&#xff08;20年&#xff09;用指针字符逆序 代码&#xff1a; int main() {char s[7] "monkey", * p1, * p2, c;p1 p2 s;while (*p2) p2;p2--;while (p2 > p1) {c *p1; *p1 *p2; *p2-- c; }printf("%s", s);return 0; } 运行结…

LCR 150. 彩灯装饰记录 II

解题思路&#xff1a; 与LCR. 彩灯装饰记录 I类似&#xff0c;增加了分层输出。 class Solution {public List<List<Integer>> decorateRecord(TreeNode root) {Queue<TreeNode> queue new LinkedList<>();List<List<Integer>> res ne…

【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《操作系统实验室》&#x1f516;诗赋清音&#xff1a;柳垂轻絮拂人衣&#xff0c;心随风舞梦飞。 山川湖海皆可涉&#xff0c;勇者征途逐星辉。 目录 &#x1fa90;1 初识Linux OS …

WebGL以及wasm的介绍以及简单应用

简介 下面主要介绍了WebGL和wasm,是除了html,css,js以外Web标准所支持的另外两个大件 前者实现复杂的图形处理,后者提供高效的代码迁移以及代码执行效率 WebGL 简介 首先,浏览器里的游戏是怎么做到这种交互又显示不同的画面的? 试想用我们的前端三件套实现一下.好像可以…

大创项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

Unity坦克大战开发全流程——开始场景——设置界面

开始场景——设置界面 step1&#xff1a;设置面板的背景图 照着这个来设置就行了 step2&#xff1a;写代码 关联的按钮控件 监听事件函数 注意&#xff1a;要在start函数中再写一行HideMe函数&#xff0c;以便该面板能在一开始就能隐藏自己。 再在BeginPanel脚本中调用该函数即…

基于SSM的蛋糕甜品店管理系统的设计与开发论文

基于SSM的蛋糕甜品店管理系统的设计与开发 摘要 如今&#xff0c;科学技术的力量越来越强大&#xff0c;通过结合较为成熟的计算机技术&#xff0c;促进了学校、医疗、商城等许多行业领域的发展。为了顺应时代的变化&#xff0c;各行业结合互联网、人工智能等技术&#xff0c…

手写Spring与基本原理--简易版

文章目录 手写Spring与基本原理解析简介写一个简单的Bean加载容器定义一个抽象所有类的BeanDefinition定义一个工厂存储所有的类测试 实现Bean的注册定义和获取基于Cglib实现含构造函数的类实例化策略Bean对象注入属性和依赖Bean的功能Spring.xml解析和注册Bean对象实现应用上下…

API 开放平台项目(已整理,已废弃)

项目大纲 前端 React 18Ant Design Pro 5.x 脚手架Ant Design & Procomponents 组件库Umi 4 前端框架OpenAPI 前端代码生成 后端 Java Spring BootMySQL 数据库MyBatis-Plus 及 MyBatis X 自动生成API 签名认证&#xff08;Http 调用&#xff09;Spring Boot Starter&#…

探寻数据压缩——第一代小波构造的统一框架

小波分析作为一种多尺度分析方法&#xff0c;已经在信号处理、图像处理、数据压缩和模式识别等领域中展现出了巨大的应用潜力。在小波分析的发展历程中&#xff0c;第一代小波构造算法被广泛应用&#xff0c;为了更好地理解和应用第一代小波构造算法&#xff0c;构建一个统一的…