链表oj题1(Leetcode)——移除链表元素,反转链表,链表的中间节点,

链表OJ

  • 一,移除链表元素
    • 1.1分析
    • 1.2代码
  • 二,找到链表的中间节点
    • 2.1分析
    • 2.2代码
  • 三,反转链表
    • 3.1分析
    • 3.2代码
  • 四,找到链表中倒数第k个节点
    • 4.1分析
    • 4.2代码

一,移除链表元素

移除链表元素
在这里插入图片描述

1.1分析

这里的删除要分成两种情况来考虑,因为这个题目给了我们头节点,所以分成头删和非头删。因为要记录下一个节点的位置,所以1我们这里选择新增两个指针方便记录。因为我们已经熟悉了链表所以这代码对我们来说还是很容易的。

1.2代码

struct ListNode* removeElements(struct ListNode* head, int val){struct ListNode* cur=head;struct ListNode* prev=NULL;//遍历链表找满足条件的valwhile(cur){if(cur->val==val){//头删特殊处理if(cur==head){head=cur->next;free(cur);cur=head;}//一般化删除else{prev->next=cur->next;free(cur);cur=prev->next;}}else{prev=cur;cur=cur->next;}}return head;
}

二,找到链表的中间节点

链表的中间节点
在这里插入图片描述

2.1分析

这里要让我们找到中间的节点,我们从题目出发,有个非常巧妙的写法就是快慢指针,我们定义两个指针,慢指针正常一次走一步,而快指针一次走两步,那么当快指针走到结束的时候慢指针就在中间位置了。

2.2代码

struct ListNode* middleNode(struct ListNode* head){struct ListNode*slow=head;struct ListNode*fast=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}

三,反转链表

反转链表
在这里插入图片描述

3.1分析

创建一个newhead链表,把原链表从左到右一个一个取出来放到newhead中去。

3.2代码

struct ListNode* reverseList(struct ListNode* head){struct ListNode*cur=head;struct ListNode*newhead=NULL;while(cur){struct ListNode*next=cur->next;cur->next=newhead;newhead=cur;cur=next;}return newhead;
}

四,找到链表中倒数第k个节点

牛客——找到链表中倒数第k个节点
在这里插入图片描述

4.1分析

这里我们依旧选择快慢指针。
在这里插入图片描述
我们假设k是3,那么我们定义fast,和slow两个指针,第一让fast先走k下,然后两个指针一起走,那么当fast走到NULL,slow所在的位置就是倒数第k个位置。
在这里插入图片描述

4.2代码

struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code herestruct ListNode*fast=pListHead;struct ListNode*slow=pListHead;while(k--){if(fast==NULL){return NULL;}else {fast=fast->next;}}while(fast){fast=fast->next;slow=slow->next;}return slow;
}

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

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

相关文章

python的类型注释

指定变量的类型 x: int 5name: str liming 指定函数参数的类型和返回值的类型 def multiply(a: int, b: int) -> int:return a * b使用类型提示的列表或字典 from typing import List, Dictdef process_items(items: List[str]) -> Dict[str, int]:frequencies: Di…

9月19日作业

完成文本编辑器的保存工作-代码: void Widget::on_pushButton_4_clicked() {//创建保存文件对话框QString filename QFileDialog::getSaveFileName(this,"保存文件","./","All(*.*);;Text files (*.txt)");//创建一个文件对象&…

【VisualStudio】NuGet包管理器下载缓存packages文件夹过大怎么清理

使用Visual Studio 开发工具时间长了,会发现整个项目的总大小越来越大,默认是存放在电脑系统盘里的,随着Windows11系统常常更新重启,导致系统盘闲置空间越来越小,该怎么办呢。 描述问题 整个解决方案项目会越变越大&…

problen(5)ubuntu版本问题

浅浅记录一下这段时间的血和泪吧,大概耗时快一个月了吧,终于解决了...... 因为需要开启pwn之旅,需要在Ubuntu上安装一些东西,就是下面的一条命令: sudo pip3 install pwntools -i Simple Index(显示不太好了…

Vue 03 数据绑定

Vue中有2种数据绑定的方式: 1.单向绑定(v-bind): 数据只能从data流向页面。 2.双向绑定(v-model): 数据不仅能从data流向页面,还可以从页面流向data。 备注: 1.双向绑定一般都应用在表单类元素上(如&am…

1、RocketMQ概述

第1章 RocketMQ概述 一、MQ概述 1、MQ简介 MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生 产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。 2、MQ用途 从网上…

Java低代码:jvs-list (子列表)表单回显及触发逻辑引擎配置说明

一、子列表【新增】表单默认回显主列表关联字段 子列表新增表单可使用表单回显配置,在新增表单中默认回显,如图效果 1、子列表中进入新增页面配置 2、切换到表单设置,选择回显设置,进入回显逻辑引擎。 3、在画布中拖入【对象变量…

接入网技术

接入网 接入网是指骨干网络到用户或企业之间的所有设备。其长度一般为几百米到几公里,因而形象地被称为“最后一公里”。接入网地接入方式包括铜线(普通电话线)接入、基于双绞线的ADSL技术、基于HFC网(光纤和同轴电缆(有线电视电缆)混合网)的Cable Modem技术、光纤接入…

【Vue】浏览器自定义格式化工具

当我们不启用浏览器自定义格式化工具,输出 Ref 或者 Reactive 类的值出输出完整的返回值对象,而且 value 值需要再次点击才可以得到。 为了解决这个问题,我们可以开启浏览器自定义格式化工具。 点击 setting 齿轮 依次找到 preference ->…

一对多映射处理

8.3.1 、collection /** * 根据部门id查新部门以及部门中的员工信息 * param did * return */ Dept getDeptEmpByDid(Param("did") int did);<resultMap id"deptEmpMap" type"Dept"> <id property"did" column"did&quo…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署odoo开源ERP平台

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署odoo开源ERP平台 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例使用场景1.3 云耀云服务器L实例特点 二、odoo介绍2.1 odoo简介2.2 odoo特点 三、本次实践介绍3.1 本次实践简介3.2 本…

科技云报道:青云科技打出“AI算力牌”,抢跑“云+AI”新增市场

科技云报道原创。 近三年&#xff0c;中国云计算市场在多个维度同时发生着剧烈变化——疫情极大加速了全社会对于数字化的认知和接受程度&#xff1b;一系列云原生技术依托着开源和蓬勃的市场而迅速发展演变&#xff0c;更多产品和技术名词同时涌向市场&#xff1b;国际关系复…

用python代码写中秋电影动画送对象

好&#xff0c;中秋节快到了&#xff0c;那我们就写个代码送对象吧&#xff01; 目录 基础代码 添加月兔和月饼 加上颜色 添加动作 添加兔子动作 成品 基础代码 直接上print时间复杂度杠杠的&#xff1a; import timedef send_mid_autumn_movie_to_girlfriend():pri…

字符流的使用(FileReader)

1、文件字符输入流&#xff1a;一次读取一个字符 1.1、字节流读取中文输出可能会存在什么问题&#xff1f; 会乱码。或者内存溢出。 1.2、读取中文输出&#xff0c;哪个流更合适&#xff0c;为什么&#xff1f; 字符流 更合适&#xff0c;最小单位是按照单个字符读取的。 packa…

http客户端Feign使用

一、RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);存在下面的问题&#xff1a; 代码可读…

spring_javaConfig实现配置

现在我们尝试不使用Spring的XML文件来配置了&#xff0c;全权交给Java来做 1 编写pojo类 这个类要被Spring接管&#xff0c;要被注册到容器中 添加Component注解通过Value注解来为属性注入值 package com.wq.pojo;import org.springframework.beans.factory.annotation.Value…

怒刷LeetCode的第1天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;暴力枚举 方法二&#xff1a;哈希表 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;动态规划 第三题 题目来源 题目内容 解决方法 方法一&#xff1a;模拟 第一题 题目来源 两数之和 - 力…

Python实现查询一个文件中的pdf文件中的关键字

要求&#xff0c;查询一个文件中的pdf文件中的关键字&#xff0c;输出关键字所在PDF文件的文件名及对应的页数。 import os import PyPDF2def search_pdf_files(folder_path, keywords):# 初始化结果字典&#xff0c;以关键字为键&#xff0c;值为包含关键字的页面和文件名列表…

一篇文章教你Pytest快速入门和基础讲解,一定要看!

前言 目前有两种纯测试的测试框架&#xff0c;pytest和unittestunittest应该是广为人知&#xff0c;而且也是老框架了&#xff0c;很多人都用来做自动化&#xff0c;无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架出去面试也好&#xff0c;跟别…