代码随想录再战day3

力扣

209移除链表

 

 思路:

        第一:

                首先明白 链表中的元素是无法被真正的删除的 只能替换指针的指向的元素

        第二:

                这道题是说移除链表中的目标元素,需要创建一个虚拟节点dummy去始终指向我们的头节点,能够保证我们最后输出的时候是从头部到尾部 顺序是保持的。

        第三:

                如何删除?举个例子 [1,2,3]比如我们要删除的元素是2. 那么当我们指针指向1的时候,进行判断,如果当前元素指向的下一个元素是要删除的值,那么我们就改变这个元素的指向,变成指向下下个元素,也就是跳过了中间的元素2.这也就是我们的删除操作。

def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
        dummy_node = ListNode(0,head)
        cur = dummy_node
        
        while cur.next!=None:
            if cur.next.val ==val:
                cur.next = cur.next.next 
            else:
                cur = cur.next 
        return dummy_node.next

707 设计链表 

 题目不难 但是很多细节问题 

思路:

        这里面都有一个共同点,都会涉及到一个链表元素的下标。那就是说我们需要判断这个index是不是大于链表长度或者说这个index是负数。这是两种特殊情况。

        第一:

                我们需要额外创建一个listnode类,为了需要插入的节点做一个初始化。

        第二:

                需要判断,如果是添加节点到指定index的前一位,那么我们的循环就是for xx in range(index)这里循环刚好到指定index的上一位截止。然后创建我们的node。并且注意:这里我们需要一个临时变量来储存新元素

举个例子:

               1->2->3->5,我要在5的前面插入一个4.那么我循环index到3的位置的时候就停下了,这时候创建节点4,首先让节点4指向5,其次再让当前的节点3指向4.所以这里需要一个temp_node来作为临时变量去存新元素。

代码:

class ListNode:

    def __init__(self, val):
        self.val = val
        self.next = None


class MyLinkedList:

    def __init__(self):
        self.size = 0 
        self.head = ListNode(0)

    def get(self, index: int) -> int:
        if index<0 or index>=self.size:
            return -1 
        cur = self.head
        for i in range(index+1):
            cur = cur.next 
        if cur==None:
            return -1
        return cur.val

    def addAtHead(self, val: int) -> None:
        self.addAtIndex(0,val)

    def addAtTail(self, val: int) -> None:
        new_node = ListNode(val)
        pre = self.head
        for _ in range(self.size+1):
            while pre.next:
                pre = pre.next 
        pre.next = new_node
        self.size+=1

    def addAtIndex(self, index: int, val: int) -> None:
        if index>self.size:
            return
        if index<0:
            index = 0 
        #获取隐藏的头节点
        p = self.head       
        #遍历获取增加节点的上一个节点 
        for j in range(index):
            p = p.next 
        #创建新节点 让虚拟头节点指向新节点
        temp_node = ListNode(val)
        #注意 要将被插入的节点指向原节点的下一个节点
        temp_node.next = p.next 
        #将原节点指向被插入的新节点
        p.next = temp_node
        self.size+=1
            



    def deleteAtIndex(self, index: int) -> None:
        #判断index是否有效
        if index<0 or index>=self.size:
            return 
        #获取隐藏的头节点
        p = self.head 
        #获取被删除节点的上一个节点
        for j in range(index):
            p = p.next 
            #告诉当前节点,下个节点位下下个节点
        p.next = p.next.next 
        self.size-=1 

206反转链表  

力扣

 

 还是看了carl哥书上写的思路

思路:

       

                首先这里需要用到一个双指针,一个cur指向头部,一个pre指针赋值为none.

                同时还需要一个temp指针来保存cur的下一个元素。

                然后pre和cur指针不断交换,链表最后也反转完成,最后return pre指针就可以了。

def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        
        pre = None
        cur = head 
        while cur:
            temp = cur.next 
            cur.next = pre 
            pre = cur 
            cur = temp 
        return pre

代码:

                

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Yolov5-Face 原理解析及算法解析

YOLOv5-Face 文章目录 YOLOv5-Face1. 为什么人脸检测 一般检测&#xff1f;1.1 YOLOv5Face人脸检测1.2 YOLOv5Face Landmark 2.YOLOv5Face的设计目标和主要贡献2.1 设计目标2.2 主要贡献 3. YOLOv5Face架构3.1 模型架构3.1.1 模型示意图3.1.2 CBS模块3.1.3 Head输出3.1.4 stem…

Ubuntu连不上网,在windows安装docker后

在windows上安装docker后&#xff0c;会依赖于virtualbox虚拟机&#xff0c;并且有虚拟网络&#xff0c;与ubuntu虚拟机网络产生冲突。 解决办法&#xff0c;打开网络适配器&#xff0c;禁用VirtualBox网络 这个时候就可以了。 ubuntu上使用docker pull镜像的时候&#xff0c…

MongoDB简介

目录 1、NoSQL概述 2、什么是MongoDB 3、MongoDB特点 一、MongoDB安装&#xff08;docker方式&#xff09; 二、MongoDB安装&#xff08;普通方式&#xff09; 三、MongoDB 概念解析 1、NoSQL概述 NoSQL(NoSQL Not Only SQL)&#xff0c;意即反SQL运动&#xff0c;指的是…

【AcWing算法基础课】第二章 数据结构(部分待更)

文章目录 前言课前温习一、单链表核心模板1.1题目描述1.2思路分析1.3代码实现 二、双链表核心模板2.1题目描述2.2思路分析2.3代码实现 三、栈核心模板3.1题目描述3.2思路分析3.3代码实现 四、队列核心模板4.1题目描述4.2思路分析4.3代码实现 五、单调栈核心模板5.1题目描述5.2思…

短视频矩阵抖音账号矩阵系统源码开发者自研(一)

一、短视频矩阵系统源码框架建模搭建 目录 一、短视频矩阵系统源码框架建模搭建 1.抖音账号矩阵系统功能模型建模 2.短视频账号矩阵系统接口开发规则 二、短视频矩阵系统源码视频剪辑转码处理 短视频矩阵系统是一个多功能的视频内容管理系统&#xff0c;用于创建、剪辑发布…

charles unknown 问题和手机代理设置(iOS手机)

一、Charles下载 下载地址&#xff1a;https://www.charlesproxy.com/download/ 二、Charles配置代理 1.查看本机IP&#xff1a;help-->Local IP Address 2.查看或者设置访问端口&#xff1a;Proxy->Proxy Settings 3.设置不代理计算机的请求&#xff08;推荐&#xff0…

buuctf re(二)+ web CheckIn

目录 re xor helloword reverse3 web SUCTF 2019 CheckIn xor 1.查壳 64位&#xff0c;无壳 2.ida&#xff0c;f5查看伪代码 3.跟进global dq是八个字节&#xff0c;汇编数据类型参考汇编语言---基本数据类型_汇编db类型_wwb0111的博客-CSDN博客 4.因为global变量里有一…

蓝桥杯专题-试题版-【九宫重排】【格子刷油漆】【回文数字】【国王的烦恼】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

高级第二个月复习

1.route与router的区别 $route&#xff1a;获取路由信息 指当前路由实例跳转到的路由对象 包括&#xff1a; $route.path 字符串&#xff0c;等于当前路由对象的路径&#xff0c;会被解析为绝对路径&#xff0c;如/home/ews $route.name 当前路由的名字&#xff0c;如果没有使…

Flutter悬浮UI的设计Overlay组件

文章目录 APP开发经常要遇到的开发场景Overlay 的介绍Overlay的使用规则举例说明源码例子报错报错No Overlay widget found报错原因解决方法 修改后的源码 例子效果 APP开发经常要遇到的开发场景 有时候我们在开发APP的时候会遇到下面这些需求&#xff1a; 在现有页面上添加浮…

【记录】实践场景

Apache Doris 在京东搜索实时 OLAP 探索与实践 https://doris.apache.org/zh-CN/blog/JD_OLAP/ 通过对比开源的几款实时OLAP引擎&#xff0c;我们发现doris和clickhouse能够满足我们的需求&#xff0c;但是clickhouse的并发度太低是个潜在的风险&#xff0c;而且clickhouse的数…

css新特性(五)

css基础&#xff08;一&#xff09;css基础&#xff08;一&#xff09;_上半场结束&#xff0c;中场已休息&#xff0c;下半场ing的博客-CSDN博客Emmet语法Emmet语法_上半场结束&#xff0c;中场已休息&#xff0c;下半场ing的博客-CSDN博客css基础&#xff08;二&#xff09;c…

多元分类预测 | Matlab粒子群算法(PSO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,PSO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab粒子群算法(PSO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,PSO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matl…

面向切面编程-AOP

Aop 概述&#xff1a;Aspect Oriented Programming(面向切面编程、面向方面编程)&#xff0c;即面向特定的方法编程,对原有的方法进行附加、增强 动态代理是面向切面编程的主流实现 实现步骤 pom文件中导入AOP依赖 <dependency><groupId>org.springframework.…

Spring Boot中的事务隔离级别

Spring Boot中的事务隔离级别 介绍 Spring Boot是一个流行的Java框架&#xff0c;它提供了许多方便的注解和工具&#xff0c;使得数据库操作变得更加容易。其中&#xff0c;事务隔离级别是Spring Boot中一个非常重要的概念&#xff0c;它可以帮助开发者控制数据库操作的并发性…

Jmeter(jmeter-plugins插件的安装使用)

目录 一、安装JMter Plugins 二、Custom Thread Groups插件 Stepping Thread Group 元件 Ultimate Thread Group 一、安装JMter Plugins 1、官网下载 JMeter Plugins 的jar包 2. 将下载的jar包复制到 %JMETER_HOME%\lib\ext 目录下 3. 启动 JMeter --> Options -->…

Chrome/Edge 浏览器多账号登录,测试同一业务系统的不同账号角色

文章目录 如何使用多账户&#xff1f;ChromeEdge 虽然说用不同浏览器测试也比较方便、还能顺带测试多浏览器兼容问题…… 但我是开发呀&#xff0c;我只想用我最习惯的谷歌浏览器完成快速开发&#xff0c;把功能铺上&#xff0c;专注于业务逻辑的开发 这些浏览器差异等只会给我…

vue+elementui实现英雄联盟道具城

目录 一、效果图 1.首页 2.商品列表、分类 二、实现重点讲解 1.首页轮播图 1.1技术实现&#xff1a; 1.2.鼠标聚焦切换图片事件 2.首页tab切换 3.商品列表实现 三、项目结构说明 四、总结 一、效果图 1.首页 项目与官方效果没有太大差异&#xff1a; 游戏导航&#xff1…

【SQL应知应会】分析函数的点点滴滴(一)

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 分析函数的点点滴滴 1.什么是分析函数&#xff1a;…

Ubuntu离线安装Telnet服务

通过ssh上传telnet包&#xff0c;下载地址&#xff1a;telnet-0.17-41.2build1-amd64资源-CSDN文库 解压telnet包&#xff1a; tar -xzvf telnet_0.17-41.2build1_amd64.tar.gz 安装telnet服务&#xff1a; dpkg -i telnet_0.17-41.2build1_amd64.deb 安装完毕&#xff0c;测…