【代码随想录算法训练营-第三天】【链表】203,707,206

203.移除链表元素

一遍AC

  • 没什么难度,记住如何定义、使用链表,链表中的节点;
  • 记住链表移除的操作代码;
  • 了解虚拟头节点的用法;
class Solution {public ListNode removeElements(ListNode head, int val) {if(head == null){return head;}ListNode dummyNode = new ListNode(-1,head);ListNode currNode = head;ListNode preNode = dummyNode;while(currNode!=null){if(currNode.val == val){preNode.next = currNode.next;}else{preNode = currNode;}currNode = currNode.next;}return dummyNode.next;}
}

707.设计链表-单链表实现

  • 重点:
    • 如何判断每个方法里面的for循环结束的条件
    • 如何判断index非法的条件
package LinkList;public class SingleLinkList {public static void main(String[] args) {MyLinkedList myLinkedList = new MyLinkedList();myLinkedList.addAtHead(4);int first = myLinkedList.get(1);myLinkedList.addAtHead(1);myLinkedList.addAtHead(5);myLinkedList.deleteAtIndex(3);myLinkedList.addAtHead(7);int second = myLinkedList.get(3);int third = myLinkedList.get(3);int fourth = myLinkedList.get(3);myLinkedList.addAtHead(1);myLinkedList.deleteAtIndex(4);}
}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 MyLinkedList {int size;ListNode dummy;public MyLinkedList() {size = 0;dummy = new ListNode(0);}public int get(int index) {/** 第一遍没有AC错误出在了这里* 一开始的条件是 index < 0 || index > size* 但是当测试用例为:*   myLinkedList.addAtHead(4);*   int first = myLinkedList.get(1);* 这时候size = 1,同时想要获取index=1的元素,其实是获取不到的* 但没有添加index=size的非法条件* 就会导致return中的currNode=null* 因此currNode.val是非法的* */if (index < 0 || index >= size) {return -1;}ListNode currNode = dummy;for (int i = 0; i <= index; i++) {currNode = currNode.next;}return currNode.val;}public void addAtHead(int val) {addAtIndex(0, val);}public void addAtTail(int val) {addAtIndex(size, val);}public void addAtIndex(int index, int val) {if (index < 0 || index > size) {return;}ListNode addNode = new ListNode(val);ListNode preNode = dummy;for (int i = 0; i < index; i++) {preNode = preNode.next;}addNode.next = preNode.next;preNode.next = addNode;size++;}public void deleteAtIndex(int index) {if (index < 0 || index >= size) {return;}size--;if (index == 0) {dummy = dummy.next;return;}ListNode preNode = dummy;for (int i = 0; i < index; i++) {preNode = preNode.next;}preNode.next = preNode.next.next;}
}

206. 反转链表

第一遍-双指针法

  • 思路:【这次偷懒了】
    • 本来第一反应是利用栈,先压栈,后出栈
    • 但这样的操作过于麻烦,还需要定义ListNode的类,和在链表中添加ListNode的方法;
    • 因此,直接去看了代码随想录的思路,果然比我的要简单很多;
class Solution {public ListNode reverseList(ListNode head) {ListNode preNode = null;ListNode currNode = head;ListNode tmpNode = null;while (currNode != null) {tmpNode = currNode.next;currNode.next = preNode;preNode = currNode;currNode = tmpNode;}return preNode;}
}

第二遍-递归法

  • 因为第一遍从开始写到AC用时很短,因此尝试了一下递归法
  • 也一遍AC了
class Solution {public ListNode reverse(ListNode preNode, ListNode currNode) {if (currNode == null) return preNode;ListNode tmpNode = currNode.next;currNode.next = preNode;return reverse(currNode, tmpNode);}public ListNode reverseList(ListNode head) {return reverse(null, head);}
}

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

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

相关文章

HT7183 高功率异步升压转换器 中文资料

HT7183是一款高功率异步升压转换器&#xff0c;集成120mΩ功率开关管&#xff0c;为便携式系统提供G效的小尺寸处理方案。HT7183具有2.6V至5.5V输入电压范围&#xff0c;可为各类不同供电的应用提供支持。HT7183具备3A开关电流能力&#xff0c;并且能够提供高达16V的输出电压。…

C#/.NET/.NET Core优秀项目和框架2023年11月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架&#xff08;公众号每周至少推荐两个优秀的项目和框架当然节假日除外&#xff09;&#xff0c;公众号推文有项目和框架的介绍、功能特点以及部分截图等&#xff08;打不开或者打开GitHub很慢的同学可以优先查看…

Python搭建代理IP池实现接口设置与整体调度

目录 前言 1. 搭建免费代理IP爬虫 2. 将获取到的代理IP存储到数据库中 3. 构建一个代理IP池 4. 实现调度器来调度代理IP池 5. 实现带有代理IP池的爬虫 总结 前言 在网络爬虫中&#xff0c;代理IP池是一个非常重要的组件。由于许多网站对单个IP的请求有限制&#xff0c;…

客户满意的黄金法则:10个让您一击即中的服务技巧!

在当今日益竞争激烈的商业世界中&#xff0c;提供出色的客户服务是保持企业成功的关键。无论您是一家大型公司、一家小型创业企业&#xff0c;还是个人品牌&#xff0c;客户服务都是建立持久关系、增加忠诚度和获取推荐的必备条件。 那么&#xff0c;如何做好客户服务呢&#x…

练习11-简单卷积器的设计

简单卷积器的设计 1&#xff0c;任务目的&#xff1a;2&#xff0c;明确设计任务2.1,目前这部分代码两个文件没找到&#xff0c;见第5、6节&#xff0c;待解决中。 &#xff0c;卷积器的设计&#xff0c;RTL&#xff1a;con1.v4&#xff0c;前仿真和后仿真&#xff0c;测试信号…

mapbox Marker添加自定义html

思路就是先渲染出空div使用getElementsByClassName找到点&#xff0c;之后使用insertAdjacentHTML(‘beforeend’, div) 加自定义内容。 const el document.createElement(div);// 添加一个标记el.className j_icon;const itemIcon new MapboxGl.Marker({element: el,}).set…

JVM垃圾回收机制GC

一句话介绍GC&#xff1a; 自动释放不再使用的内存 一、判断对象是否能回收 思路一&#xff1a;引用计数 给这个对象里安排一个计数器&#xff0c; 每次有引用指向它&#xff0c; 就把计数器1&#xff0c; 每次引用被销毁&#xff0c;计数器-1&#xff0c;当计数器为0的时候…

文献速递 | CAR-T细胞助力增强前列腺癌肿瘤细胞抗肿瘤能力

前列腺癌是男性泌尿生殖系统最常见的恶性肿瘤&#xff0c;在全球&#xff0c;前列腺癌的发病率在男性所有恶性肿瘤中高居第2位&#xff0c;仅次于肺癌。免疫检查点分子转化生长因子受体II&#xff08;TGFβRII&#xff09;、T细胞免疫球蛋白和粘蛋白结构域3&#xff08;TIM3&am…

QT中如何使用自定义控件

在 Qt 中&#xff0c;要使用自定义控件&#xff0c;需要遵循以下步骤&#xff1a; 创建自定义控件&#xff1a; 首先&#xff0c;需要创建一个自定义控件类&#xff0c;该类继承自 QWidget 或 QGraphicsItem 等基本控件类&#xff0c;并实现其相关函数和槽函数等。 在头文件中…

python--namedtuple

namedtuple(具名元组) namedtuple是tuple的升级,目的是解决元组内部的数据进行命名的问题,为了说明namedtuple的优点,我们先看一下tuple的例子,如下代码,声明了课程的元祖,但是元组中两项内容没有说明,如果其他人看到代码不知道意思是什么 course = ("Python教程…

【带讲解】同校不同命,差个代号差好多!

今天分享的是23年哈尔滨工程大学815的信号与系统试题及解析。同样是哈尔滨工程大学&#xff0c;信号部分810着实比815难了很多&#xff01;但是815还有一门电路&#xff0c;压力也不小&#xff0c;两个代号各有利弊&#xff01; 小马哥Tips&#xff1a; 本套试卷难度分析&…

通过流量分析,明确医院重要主机中毒详情

故障现象 医院系统内部发现有一台重要主机持续产生了大量的连接失败数&#xff0c;主机IP为192.xxx.xxx.37&#xff0c;持续时间从2023年11月23日20&#xff1a;00持续到2023年11月24日10&#xff1a;00&#xff0c;十点后管理人员发现并封禁了该IP地址。 分析目的 针对医院…

项目部署到线上服务器后,报 Redis error: ERR unknown command del 错误

查了很多资料&#xff0c;终于解决了&#xff0c;问题出在redis.conf里&#xff0c;该文件里被添加了新的命令如下&#xff1a; 在这几句命令前加 # 号注释掉&#xff0c;重启即可解决 另附上相关redis的命令&#xff1a; 停止Redis&#xff1a;systemctl stop redis启动Redis…

【算法刷题】Day11

文章目录 面试题 08.01. 三步问题题干&#xff1a;算法原理&#xff1a;1、状态表示2、状态转移方程3、初始化4、填表顺序5、返回值 代码&#xff1a; 209. 长度最小的子数组题干&#xff1a;算法原理&#xff1a;1、暴力枚举出所有的子数组的和2、利用单调性&#xff0c;使用“…

大数据项目——基于Django协同过滤算法的房源可视化分析推荐系统的设计与实现

大数据项目——基于Django协同过滤算法的房源可视化分析推荐系统的设计与实现 技术栈&#xff1a;大数据爬虫/机器学习学习算法/数据分析与挖掘/大数据可视化/Django框架/Mysql数据库 本项目基于 Django框架开发的房屋可视化分析推荐系统。这个系统结合了大数据爬虫、机器学习…

拼多多电商平台API接口,关键词搜索热销商品,获取商品id、销量、sku、库存演示案例

拼多多关键词搜索商品的重要性主要体现在以下几个方面&#xff1a; 提高商品曝光率&#xff1a;关键词搜索能够将商品与用户进行匹配&#xff0c;用户通过搜索关键词找到自己需要的商品。因此&#xff0c;如果商品的关键词能够准确地描述商品的特点和功能&#xff0c;并且排在…

建筑设计全过程碳排放计算与案例分析

“30/60双碳目标”已成为我国绿色发展的新国策&#xff0c;建筑业对碳排放量化分析和减排也越来越重视。特别是全文强制性国标标准《建筑节能与可再生能源利用通用规范》GB55015-2021的实施&#xff0c;对建设项目可行性研究报告、建设方案和初步设计要求进行建筑碳排放分析&am…

100G数据中心升级改造策略

视频流媒体的兴起和物联网设备的大幅增长带来数据量爆炸性增长&#xff0c;人们对算力的需求越来越大&#xff0c;网络的升级改造也成为每个数据中心关注的重点。为了应对网络压力&#xff0c;数据中心需要升级到100G及以上速率&#xff0c;为企业和用户提供高性能计算、存储和…

Python读写XML文件:深入解析与技术实现

目录 一、引言 二、XML文件基础 1、XML文件结构 2、XML文件语法规则 三、Python读取XML文件 1、使用内置库xml.etree.ElementTree 2、使用第三方库lxml 四、Python写入XML文件 1、使用内置库xml.etree.ElementTree 五、注意事项 六、总结 一、引言 XML&#xff08;…

JS前端逆向

前言 js逆向一直没有相关了解&#xff0c;虽然目前渗透遇见的不是很多&#xff0c;大多数遇见的要么不加密&#xff0c;要么无法实现其加密流程&#xff0c;不过最近看到了一个较为简单的站点正好能够逆向出来&#xff0c;就做了简单记录。本文旨在介绍js逆向的一些基础思路&am…