刷题笔记day03-链表

前言

今天是刷题的第三天,坚持就是胜利

203.移除链表元素

增加一个头结点,这样可以统一删除操作
另外,遇到等于的值,就让 prev 指向 curr.Next ,同时将curr更新指向 prev.Next。


/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func removeElements(head *ListNode, val int) *ListNode {// 思路:增加一个头结点,并且设置一个prev指针,用于删除newHead := &ListNode{}newHead.Next = headprev := newHeadcurr := newHeadfor curr != nil {if curr.Val == val {prev.Next = curr.Nextcurr = prev.Next} else {prev = currcurr = curr.Next}}return newHead.Next
}

707. 设计链表

测试代码,

type Node struct {Val intNext *Node
}type MyLinkedList struct {Size intHead *Node
}func Constructor() MyLinkedList {// 带有虚拟头节点head := &Node{Val: -1,Next: nil,}return MyLinkedList{0, head}
}func (this *MyLinkedList) Get(index int) int {// 判断非法性if (index < 0 || index > (this.Size - 1)) {return -1}node := this.Headfor i := 0; i <= index; i++ {if node == nil {return -1} else {node = node.Next}}return node.Val
}func (this *MyLinkedList) AddAtHead(val int)  {node := &Node {Val: val,Next: nil,}node.Next = this.Head.Nextthis.Head.Next = nodethis.Size++
}func (this *MyLinkedList) AddAtTail(val int)  {node := this.Head// node指向最后一位非nilfor node.Next != nil {node = node.Next}node.Next = &Node{Val: val,Next: nil,}this.Size++
}func (this *MyLinkedList) AddAtIndex(index int, val int)  {if index > this.Size {return }else if index == this.Size { //直接添加到末尾this.AddAtTail(val) return}else if index < 0 {index = 0}// header 指向插入位置的前一位header := this.Headfor i := 0; i <= index - 1; i++ {header = header.Next}node := &Node{val, nil}node.Next = header.Nextheader.Next = nodethis.Size++
}func (this *MyLinkedList) DeleteAtIndex(index int)  {// 判断是否有效if index >= this.Size || index < 0 {return}// header 指向插入位置的前一位header := this.Headfor i := 0; i <= index - 1; i++ {header = header.Next}header.Next = header.Next.Nextthis.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);*/

206. 反转链表

// 使用双指针,pre指向前一个,curr指向当前的,前后调转方向既可。

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func reverseList(head *ListNode) *ListNode {// 使用双指针var prev *ListNodecurr := headvar tmp *ListNodefor curr != nil {tmp = curr.Nextcurr.Next = prevprev = curr// curr往后移动一位curr = tmp}return prev
}

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

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

相关文章

buuctf_练[CISCN2019 华东南赛区]Web4

[CISCN2019 华东南赛区]Web4 文章目录 [CISCN2019 华东南赛区]Web4掌握知识解题思路代码分析正式解题 关键paylaod 掌握知识 ​ 根据url地址传参结构来判断php后端还是python后端&#xff1b;uuid.getnode()函数的了解&#xff0c;可以返回主机MAC地址十六进制&#xff1b;pyt…

Hive简介及核心概念

本专栏案例数据集链接: https://download.csdn.net/download/shangjg03/88478038 1.简介 Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。 …

Golang 自定义函数库(个人笔记)

1.用字符串连接切片元素&#xff08;类似php implode&#xff09; package mainimport ("fmt""strconv""strings" )func main() {data : []int{104, 101, 108, 108, 111}fmt.Println(IntSliceToString(data, ",")) }func IntSliceToS…

汽车4S店如何在数字化管理下,提高市场竞争力

在所有人都认为疫情过后&#xff0c;经济形势会一路向阳&#xff0c;但是&#xff0c;实际情况出乎所有人的意料&#xff0c;各行各业举步维艰。 新闻爆出的各大房地产&#xff0c;恒大的2.4万亿让人瞠目结舌&#xff0c;还有碧桂园和融创&#xff0c;也是债台高筑了&#xff…

xml导出pdf简单实现

1. 引入依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.1</version> </dependency>2. 代码实现 import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.ker…

ESP32网络开发实例-HTTP-GET请求

HTTP-GET请求 文章目录 HTTP-GET请求1、HTTP GET请求2、软件准备3、硬件准备4、代码实现4.1 向OpenWeatherMap请求天气数据4.2 ThingSpeak 中的 ESP32 HTTP GET(更新值)在本文中,我们将介绍如使用ESP32向 ThingSpeak 和 openweathermap.org 等常用 API 发出 HTTP GET 请求。…

ToLua使用原生C#List和Dictionary

ToLua是使用原生C#List 介绍Lua中使用原生ListC#调用luaLua中操作打印测试如下 Lua中使用原生DictionaryC#调用luaLua中操作打印测试如下 介绍 当你用ToLua时C#和Lua之间肯定是会互相调用的&#xff0c;那么lua里面使用List和Dictionary肯定是必然的&#xff0c;在C#中可以调用…

shell的执行流控制

目录 1.for语句 2.条件语句 while...do语句 until...do 语句 if...then...elif...then...else...fi 语句 3.case语句 4.expect 5.break,continue,exit 1.for语句 作用&#xff1a;为循环执行动作 for语句结构 for //定义变量 do //使用变量&#xff0…

C/S架构学习之使用epoll实现TCP特大型并发服务器

epoll实现TCP特大型并发服务器的流程&#xff1a;一、创建套接字&#xff08;socket函数&#xff09;&#xff1a;通信域选择IPV4网络协议、套接字类型选择流式&#xff1b; int sock_fd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器和…

MySQL的查询计划(EXPLAIN)

核心关注指标 在MySQL的查询计划&#xff08;EXPLAIN&#xff09;中&#xff0c;可以查看以下一些重要的指标来评估查询性能和索引使用情况&#xff1a; type&#xff1a;表示查询的访问类型&#xff0c;可以是常见的取值如"ref"、"eq_ref"、"range…

python+requests+unittest执行自动化接口测试!

1、安装requests、xlrd、json、unittest库 <1>pip 命令安装&#xff1a; pip install requests pip install xlrd pip install json pip install unittest <2> pycharm里安装 2、利用Page Object Model 设计理念创建六类Python Package(也可根据项目要求具体实施…

企业安全—DevSecOps概述详情

0x00 前言 SDL存在的问题在于体量过于庞大&#xff0c;不利于快速进行适配和进行&#xff0c;所以就有了DevSecOps&#xff0c;实际上是因为敏捷开发也就是DevOps的推进&#xff0c;并且坐上了云服务模式的火车&#xff0c;所以这一系列的东西都开始普及。DevSecOps作为DevOps…

vue3项目报错The template root requires exactly one element.eslint-plugin-vue

解决方案&#xff1a; 1.禁用 Vetur 并改用Volar》它现在是 Vue 3 项目的官方推荐。【必须重启vsCode】 从官方迁移指南&#xff1a; 建议使用带有我们官方扩展 Volar (opens new window) 的 VSCode&#xff0c;它为 Vue 3 提供了全面的 IDE 支持。 2.package.json文件中 &…

什么是蓝桥杯?什么是蓝桥STEMA考试?

第十五届蓝桥大赛赛事安排? STEMA考试11月(考试时间11月26日) STEMA考试1月(2024年1月) STEMA考试3月(2024年3月) 第十五届蓝桥杯省赛(2024年4月待定) 第十五届蓝桥杯国赛(2024年5月待定) 注:以上时间具体以组委会官方发布为准。 01.蓝桥杯 蓝桥杯全国软件和…

linux java 启动脚本

#!/bin/sh## java env #export JAVA_HOME/data/jdk1.8.0_121 #export JRE_HOME$JAVA_HOME/jre## service name #当前目录 SERVICE_DIR$(cd dirname $0; pwd) echo "$SERVICE_DIR" #jar包路径 JAR_DIRls -ltr $SERVICE_DIR/*.jar| tail -1 echo "JAR_DIR $JAR_DI…

强化学习------PPO算法

目录 简介一、PPO原理1、由On-policy 转化为Off-policy2、Importance Sampling&#xff08;重要性采样&#xff09;3、off-policy下的梯度公式推导 二、PPO算法两种形式1、PPO-Penalty2、PPO-Clip 三、PPO算法实战四、参考 简介 PPO 算法之所以被提出&#xff0c;根本原因在于…

#力扣:2315. 统计星号@FDDLC

2315. 统计星号 - 力扣&#xff08;LeetCode&#xff09; 一、Java class Solution {public int countAsterisks(String s) {int cnt 0;boolean flag true;for(char c: s.toCharArray()) {if(c |) flag !flag;else if(c * && flag) cnt;}return cnt;} }

什么是可重入,什么是可重入锁? 它用来解决什么问题?

可重入 可重入是多线程并发编程里面一个比较重要的概念&#xff0c;简单来说&#xff0c;就是在运行的某个函数或者代码&#xff0c;因为抢占资源或者中断等原因导致函数或者代码的运行中断&#xff0c;等待中断程序执行结束后&#xff0c;重新进入到这个函数或者代码中运行&am…

Python----break关键字对while...else结构的影响

案例&#xff1a; 女朋友生气&#xff0c;要求道歉5遍&#xff1a;老婆大人&#xff0c;我错了。道歉到第三遍的时候&#xff0c;媳妇埋怨这一遍说的不真诚&#xff0c;是不是就是要退出循环了&#xff1f;这个退出有两种可能性&#xff1a; ① 更生气&#xff0c;不打算原谅…

【Qt之QSetting】介绍及使用

概述 QSettings类提供了一种持久的、与平台无关的应用程序设置存储功能。 用户通常期望一个应用能在不同会话中记住其设置&#xff08;窗口大小和位置&#xff0c;选项等&#xff09;。在Windows上&#xff0c;这些信息通常存储在系统注册表中&#xff1b;在macOS和iOS上&…