【代码随想录】算法训练计划03

1、203. 移除链表元素

题目:
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
在这里插入图片描述

思路:
  • 移除链表元素,链表一定要注意虚拟头
  • 不要忘记不删除的时候要前移元素
  • 注意 cur 的赋值方式
  • 注意是初始化一个虚拟头节点,和声明分别开
// 代码一刷——虚拟头
func removeElements(head *ListNode, val int) *ListNode {dummy := &ListNode{}dummy.Next = head//cul.Next := head 这种写法错了cul := dummyfor cul.Next != nil {if cul.Next.Val == val {cul.Next = cul.Next.Next} else { // 不要忘记前移cul = cul.Next}}return dummy.Next
}

2、707. 设计链表

题目:
题目太长了就不复制了

思路:
  • 这题吧,主要两点
  • 1、注意条件说的是 index 是下标
  • 2、注意边界条件,-1 啥的
// 代码一刷
type SingleNode struct {Val intNext *SingleNode
}type MyLinkedList struct {dummyHead *SingleNodeSize int
}func Constructor() MyLinkedList {newNode := &SingleNode{-99,nil,}return MyLinkedList{dummyHead: newNode,Size: 0,}
}func (this *MyLinkedList) Get(index int) int {//获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1 if this == nil || index < 0 || index >= this.Size {return -1}cur := this.dummyHead.Nextfor i:=0; i<index; i++ {cur = cur.Next}return cur.Val
}func (this *MyLinkedList) AddAtHead(val int)  {newNode := &SingleNode{Val:val}newNode.Next = this.dummyHead.Nextthis.dummyHead.Next = newNode//return this.Nextthis.Size++
}func (this *MyLinkedList) AddAtTail(val int)  {cur := this.dummyHeadfor cur.Next != nil {cur = cur.Next}newNode := &SingleNode{Val: val}cur.Next = newNodethis.Size++
}func (this *MyLinkedList) AddAtIndex(index int, val int)  {//if index < 0 {index = 0} else if index > this.Size {return}newNode := &SingleNode{Val:val}cur := this.dummyHeadfor i:=0; i<index; i++ {cur = cur.Next}newNode.Next = cur.Nextcur.Next = newNodethis.Size++
}func (this *MyLinkedList) DeleteAtIndex(index int)  {if index < 0 || index >= this.Size {return}cur := this.dummyHeadfor i:=0; i<index; i++ {cur = cur.Next}if cur.Next != nil {cur.Next = cur.Next.Next}this.Size--
}/*** Your MyLinkedList object will be instantiated and called as such:* obj := Constructor();* param_1 := obj.Get(index);* obj.AddAtHead(val);* obj.AddAtTail(val);* obj.AddAtIndex(index,val);* obj.DeleteAtIndex(index);*/

3、206. 反转链表

题目:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

思路:
  • 写老多遍了,这最少是第 7 遍,说说这次注意点吧
  • 1、注意声明两个变量,pre,cur
  • 2、注意 pre 声明,但是不初始化,因为不要 nil,看输入输出就知道了
// 代码一刷——只需要声明一个 pre 即可,不需要初始化
func reverseList(head *ListNode) *ListNode {var pre *ListNodecur := headfor cur != nil {next := cur.Nextcur.Next = prepre = curcur = next}return pre
}

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

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

相关文章

Python---练习:使用for循环实现用户名+密码认证

案例&#xff1a; 用for循环实现用户登录 ① 输入用户名和密码 ② 判断用户名和密码是否正确&#xff08;usernamelaowang&#xff0c;passwordlw123&#xff09; ③ 登录仅有三次机会&#xff0c;超过3次会报错 思考&#xff1a; 用户登陆情况有3种: ① 用户名错误(此时…

redis archive github

https://github.com/redis/redis/releases/tag/7.2.2https://github.com/redis/redis/releases/tag/7.2.2

【MATLAB源码-第57期】基于matlab的IS95前向链路仿真,输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 IS-95&#xff0c;也被称为cdmaOne&#xff0c;是第一代的CDMA&#xff08;Code Division Multiple Access&#xff0c;码分多址&#xff09;数字蜂窝通信标准。IS-95的全称是Interim Standard-95&#xff0c;最初由Qualcomm…

网工内推 | 急招网工,思科、华为认证优先,法定节假日三薪

01 江苏臻云技术 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责落实数据中心机房日常网络监测及巡检任务&#xff1b; 2、负责数据中心网络设备日常监控、变更、维护、巡检&#xff1b; 3、负责日常巡检报告、故障维护报告、变更申请的文档的编制&#xff1b;…

Go结构体接口反射

文章目录 Go结构体&接口&并发&反射一、结构体struct0、Type关键字1、struct定义及使用2、struct tag3、struct匿名成员3、struct继承4、struct方法 二、接口interface1、接口定义和使用2、空接口3、接口多态及嵌套 三、Go并发1、go协程2、chan管道3、单向管道4、Se…

web - Tomcat服务器

文章目录 目录 文章目录 前言 一 . CS和BS的异同 二 . 什么是Tomcat 二 . Tomcat安装 四 . Tomcat目录结构 bin目录: 用于存放二进制的可执行文件 config目录 server.xml&#xff1a;配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是&#xff1a;8080 lib目录 log…

51单片机实验:数码管动态显示00-99

1、实验要求 利用STC89C52RC单片机开发板实现&#xff1a;使用2位数码管循环显示00-99&#xff0c;每次间隔1s&#xff0c;并且当计数到20时&#xff0c;则蜂鸣器鸣响1次。 2、实验分析 程序实现分析&#xff1a; 1、定义数码管位选引脚&#xff08;P2.4、P2.5、P2.6、…

FFmpeg编译安装(windows环境)以及在vs2022中调用

文章目录 下载源码环境准备下载msys换源下载依赖源码位置 开始编译编译x264编译ffmpeg 在VS2022写cpp调用ffmpeg 下载源码 直接在官网下载压缩包 这个应该是目前&#xff08;2023/10/24&#xff09;最新的一个版本。下载之后是这个样子&#xff1a; 我打算添加外部依赖x264&a…

esp32-S3 + visual studio code 开发环境搭建

一、首先在下面链接网页中下载esp-idf v5.1.1离线安装包 &#xff0c;并安装到指定位置。dl.espressif.cn/dl/esp-idf/https://dl.espressif.cn/dl/esp-idf/ 安装过程中会提示需要长路径支持&#xff0c;所以windows系统需要开启长路径使能 Step 1&#xff1a; 打开运行&…

ES6~ES13新特性(一)

文章目录 一、ES6中对象的增强1.字面量的增强2.解构Destructuring3.解构的应用场景 二、手写实现apply、call、bind方法1.apply、call方法2.bind方法 三、ECMA新描述概念1.新的ECMA代码执行描述2.词法环境&#xff08;Lexical Environments&#xff09;3.词法环境和变量环境4.环…

番外8.2 --- 后续

### 01&#xff1a;dd命令&#xff1a;在新挂载点创建swap文件大小10MB&#xff1b;&#xff08;dd if/dev/zero of/swap bs1024 count10240&#xff09; 02&#xff1a;给swap建立文件系统&#xff0c;将其分属到swap文件&#xff08;mkswap /swap&#xff1b; swapon /swap &…

Python —— UI自动化用例前置处理日志封装

1、UI自动化用例增加前置 1、fixture&#xff08;夹具&#xff09;的使用 前置顾名思义是在执行测试用例之前做的一些事情&#xff0c;在自动化测试时会碰到用例执行前需要做一些前置操作&#xff0c;以及用例执行后需要做一些后置操作&#xff0c;比如登录、退出等&#xff…