链表练习1

链表练习

总体思路就是需要设置虚拟头节点。

1.删完节点记得释放内存。

2.遍历的条件需要时cur->next, 因为cur只是一个虚拟节点。

3.dummyHead指向原链表。确保返回头节点。cur负责移动删除链表结点。

class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode* dummyHead = new ListNode(0);dummyHead->next = head;//将虚拟头节点指向head,方便后面的操作ListNode* cur = dummyHead;while(cur->next != NULL){if(cur->next->val == val){LisNode* tmp = cur->next;cur->next = cur->next->next;delete tmp;}else{cur = cur->next;}}head = dummyHead->next;delete dummyHead;return head;}
};

反转链表

思路:

不要忘记空指针。要想到null。

1.使用prev标记空,cur标记头指针,next1标记cur-next。三个指针一起往前移动,进行值的交换反转。

prev主要是记住cur的上一个元素。

next1主要是为了记住cur的下一个元素。

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* prev = nullptr;ListNode* cur = head;while(cur != nullptr){ListNode* next1 = cur->next;cur->next = prev;prev = cur;cur = next1;}return prev;}
};

头插法反转链表

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* dummy = new ListNode(0);ListNode* cur = head;ListNode* p = dummy;while(cur != NULL){ListNode* tmp = cur;cur = cur->next;tmp->next = p->next;//把原来头节点的next节点赋值给 这个新来的头节点tmp的next中。因为这是头插。p->next = tmp;//然后连接tmp。}return dummy->next;}
}

找到链表的中间结点

1.快慢指针法。只需遍历一遍。

2.先遍历一遍求节点数目,再遍历一遍得到中间节点。遍历两遍。

class Solution {
public:ListNode* middleNode(ListNode* head) {ListNode* cur = head;int count = 0;while(cur != nullptr){cur = cur->next;count++;}count = count / 2;for(int i = 0; i < count; i++){head = head->next;}return head;}
};

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

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

相关文章

java数据结构与算法刷题-----LeetCode134. 加油站

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 贪心2. 动态规划 1. 贪心 解题思路&#xff1a;时间复杂度O(…

太阳辐射传感器的工作原理

TH-FS1太阳辐射传感器是一种专门用于测量太阳辐射能量的设备&#xff0c;它可以广泛应用于太阳能利用、气象、农业、建筑材料老化以及大气污染等部门。太阳辐射传感器有多种类型&#xff0c;其中太阳总辐射传感器和热电式太阳总辐射传感器是较为常见的两种。 太阳总辐射传感器主…

RK35X8调试YT8531单网口千兆以太网PHY芯片,修复ping不通或者IP地址丢失的问题

异常现象 当硬件上使用YT8531替代Realtek瑞昱的RTL8211之后,出现系统能够正确识别ETHx ,也能设置IP地址,但是外部无法ping 成功或者重启后IP地址还会丢失的问题; 调试 裕态以太网phy芯片软件开发说明文档中对调试的方法进行了说明 硬件排查思路检查电源: 输入 3.3v;输出…

华为云HECS+NODEJS开启WEB服务后无法外网访问

接上篇&#xff1a;使用华为云HECS服务器nodejs开启web服务-CSDN博客 目录 1.首先确认安全组是开放了端口的。 2.然后开启端口 1.首先确认安全组是开放了端口的。 这里我是用的3000端口 然后需要检查一下服务器防火墙是否开启了这个端口。 输入命令检查一下3000端口是否开…

微服务原理和实践

1. 简介 微服务应用是一系列自治服务的集合&#xff0c;每个服务只负责完成一块功能&#xff0c;这些服务共同合作来就可以完成某些更加复杂的操作。与单体的复杂系统不同&#xff0c;开发者需要开发和管理一系列相对简单的服务&#xff0c;而这些服务可能以一些复杂的方式交互…

C#理解async和await

1.async和await 在C#中&#xff0c;async和await是用于处理异步操作的关键字。 async: 用于定义一个方法是异步的。当一个方法被声明为async时&#xff0c;它可以包含await表达式&#xff0c;并且其返回类型通常是Task或Task。await: 用于暂停异步方法的执行&#xff0c;等待…

【代码随想录Day27】

Day 27 回溯算法03 今日任务 组合总和 40.组合总和II131.分割回文串 代码实现 组合总和&#xff0c;直接套模板可解 public List<List<Integer>> combinationSum(int[] candidates, int target) {backtracking(candidates, target, 0);return result;}void back…

「Linux系列」聊聊vi/vim的3种命令模式

文章目录 一、vim简介二、命令模式1. 光标移动2. 复制、剪切和粘贴3. 撤销和重做4. 搜索和替换5. 显示行号 三、输入模式1. 进入输入模式2. 在输入模式下编辑文本3. 使用特殊字符和快捷键注意事项 四、命令行模式1. 保存和退出2. 查找和替换3. 显示行号和其他设置4. 执行外部命…

基于Django兴趣班预约管理系统

技术&#xff1a;pythonmysqlvue 一、系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的大…

【前端】字典获取过程

过程 登录成功后&#xff0c;去路由守卫那获取用户名&#xff0c;如果有则放行&#xff0c;没则请求用户信息以及权限菜单和字典表等信息&#xff0c;存入浏览器缓存中&#xff0c;在需要的下拉框或者表格中使用&#xff0c;每次后端新增字典&#xff0c;前端需要在utils中的字…

python中的async和await用法

文章目录 任务处理方式异步操作的优缺点async和awiatasyncawait使用 async/await 的注意事项示例 前言&#xff1a;此篇文章是在文心一言的辅助下完成的。 任务处理方式 同步操作&#xff1a;同步操作是指所有的操作都完成后&#xff0c;才返回给用户结果。当一个任务发出请求…

每日汇评:黄金等待金叉确认和央行裁决

金价周二早盘徘徊在每盎司2160美元附近&#xff0c;等待主要央行的决定&#xff1b; 尽管美债收益率疲软&#xff0c;但在日本央行和澳央行做出谨慎裁决之前&#xff0c;美元依然坚挺&#xff1b; 随着RSI指数再次转为看涨&#xff0c;黄金价格在日线图上试探金叉形态&#xff…

如何快速下载并剪辑B站视频

1、B站手机端右上角缓存视频&#xff1b; 2、在手机文件管理助手中找到android/data/80找到两个文件&#xff0c;video.m4s和audio.m4s&#xff0c;将它们发送到电脑&#xff0c;系统会默认保存在你的个人文件夹里&#xff0c;C:\users\用户名 3、下载ffmepg https://blog.cs…

算法沉淀——贪心算法二(leetcode真题剖析)

算法沉淀——贪心算法二 01.最长递增子序列02.递增的三元子序列03.最长连续递增序列04.买卖股票的最佳时机 01.最长递增子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequence/ 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子…

蓝桥杯(3.16 刷真题)

P8647 [蓝桥杯 2017 省 AB] 分巧克力 AC import java.util.Scanner;public class Main {static int n,k;static final int N 100010;static int[] a new int[N];static int[] b new int[N];public static boolean check(int x) {int ans 0;for(int i1;i<n;i)ans(a[i]/x…

空间解析几何之直线与平面:推导直线与直线、直线与平面交点

空间解析几何——直线与平面 三维空间中的直线和平面与二维空间中的性质有一定的类似之处&#xff0c;但是其相交关系的求解方式有所差异。本文回顾了三维空间中直线和平面的解析表达&#xff0c;然后推导线-线、线-面交点。 平面 空间平面的表达式为&#xff1a; A x B y…

NCV33172DR2G运算放大器芯片中文资料规格书PDF数据手册引脚图产品概述功能

产品概述&#xff1a; MC33071/72/74 系列单片运算放大器采用了带有创新设计概念的优质双极制造。此类器件根据放大器在 180 A 下运行&#xff0c;提供 1.8 MHz 增益带宽积和 2.1 V/s 摆率&#xff0c;而不采用 JFET 器件技术。尽管此系列可基于分割电源运行&#xff0c;但它尤…

mysql update set时使用and连接使更新的数据出现问题

mysql update set时使用and连接使更新的数据出现问题 简单来讲&#xff0c;我在开发时因为错误的使用and进行set连接而不是用,连接&#xff0c;使数据更新的不对&#xff0c;原本的decimal的数据值0.5被我更新后变成了null而不是0.3 原理在这篇博客里有进行说明&#xff08;我没…

Linux服务器部署若依(ruoyi-vue),从购买服务器到部署完成保姆级教程

零、购买服务器 Huawei Cloud EulerOS 还是 centos7&#xff0c;纠结了一段时间&#xff0c;了解到EulerOS是对centos8的延续版本&#xff0c;相当于官方不对centos8继续维护了&#xff0c; 最后还是选 CentOS 7.9 64bit&#xff0c;网上可查找的工具更多且官方还在持续维护。…

ES: spring boot中使用ElasticsearchClient

一、依赖&#xff1a;&#xff08;要根据不同版本的ES来调整依赖,否则会报错&#xff0c;不支持太低版本的ES&#xff0c;比如7.6以下的&#xff09; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-e…