当前位置: 首页 > news >正文

链表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;
}

相关文章:

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

链表OJ 一,移除链表元素1.1分析1.2代码 二,找到链表的中间节点2.1分析2.2代码 三,反转链表3.1分析3.2代码 四,找到链表中倒数第k个节点4.1分析4.2代码 一,移除链表元素 移除链表元素 1.1分析 这里的删除要分成两种…...

【libuv】与uvgrtrp的_SSIZE_T_定义不同

libuv的 #if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED) typedef intptr_t ssize_t;...

安卓ROM定制 修改必备常识-----初步了解system系统分区文件夹的基本含义 【二】

安卓修改rom 固件 修改GSI 移植rom 必备常识 lib--**so文件基本解析 一起来了解system目录相应文件的用途吧。(rom版本不同里面的app也会不一样) 简单打开img格式后缀文件 给大家说下最简单的方法提取img里面的文件,对于后缀img格式的文件可…...

GPT会统治人类吗

一 前言 花了大概两天时间看完《这就是ChatGPT》,触动还是挺大的,让我静下来,认真地想一想,是否真正理解了ChatGPT,又能给我们以什么样的启发。 二 思考 在工作和生活中,使用ChatGPT或文心一言,…...

win系统环境搭建(六)——Windows安装nginx

windows环境搭建专栏🔗点击跳转 win系统环境搭建(六)——Windows安装nginx 本系列windows环境搭建开始讲解如何给win系统搭建环境,本人所用系统是腾讯云服务器的Windows Server 2022,你可以理解成就是你用的windows10…...

Java中使用BigDecimal类相除保留两位小数

问题 遇到2个数相除,需要保留2位小数的结果。 解决 BigDecimal sum ...; BigDecimal yearValue ...;MathContext mathContext new MathContext(2, RoundingMode.DOWN); yearValue.divide(sum, mathContext);...

激光雷达在ADAS测试中的应用与方案

在科技高速发展的今天,汽车智能化已是必然的趋势,且自动驾驶汽车的研究也在世界范围内进行得如火如荼。而在ADAS测试与开发中,激光雷达以其高性能和高精度占据着非常重要的地位,它是ADAS测试与开发中不可缺少的组成。 一 激光雷达…...

malloc与free

目录 前提须知: malloc: 大意: 头文件: 申请空间: 判断是否申请成功: 使用空间: 结果: 整体代码: malloc申请的空间怎么回收呢? 注意事项: free:…...

计算周包材,日包材用来发送给外围系统

文章目录 1 Introduction2 code 1 Introduction In this example We get data from BOM and RESB . and calculate it . 2 code TYPES: BEGIN OF TY_ZPPT_0015_W,AUFNR TYPE ZPPT_0015-AUFNR,ZXH TYPE ZPPT_0015-ZXH,ZZJHID TYPE ZPPT_0015-ZZJHID,ZRJHID TYPE Z…...

R语言柱状图直方图 histogram

柱状图简介 柱状图也叫直方图,是展示连续性数值的分布状况。在x轴上将连续型数值分为一定数量的组,y轴显示对应值的频数。 R基本的柱状图 hist 我们用R自带的Orange数据来画图。 > head(Orange)Tree age circumference(圆周长) 1 1 118 …...

Linux磁盘管理:最佳实践

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...

uni-app:通过三目运算动态增加样式效果(class)

效果 代码 第一条:当变量line的值等于abc时,class就等于yes,反之class等于no(显然等于abc,执行yes,前景色为红色) 第一条:当变量line1的值等于abc时,class就等于yes,反之class等于no&#xff…...

API安全

1 API的简介 API代表应用程序编程接口,它由一组允许软件组件进行通信的定义和协议组成。作为软件系统之间的中介,API使软件应用程序或服务能够共享数据和功能。但是API不仅仅提供连接基础,它还管理软件应用程序如何被允许进行通信和交互。API控制程序之间交换请求的类型、请…...

手写一个翻页功能

最近在对接海康摄像头&#xff0c;需要写一个翻页得功能&#xff0c;于是乎就想到了手写&#xff0c;然后就记录一下。在vue项目里写的 <img:src"require()"alt""click"onNext(delete)"/><img:src"require()"alt""…...

element show-overflow-tooltip 复制

el-table-column的show-overflow-tooltip弹出的提示无法复制&#xff0c;官方也暂时不准备解决&#xff0c;可以自己模拟一个 <el-table-column label"支付单号" width"100"><template #default"{ row }"><el-tooltip :content&…...

【C语言】指针的进阶(三)—— 模拟实现qsort函数以及指针和数组的笔试题解析

目录 1、模拟实现qsort函数 1.1、qsort函数的回顾 1.2、模拟实现qsort函数 2、指针和数组笔试题解析 2.1、一维数组 2.2、字符数组 1、模拟实现qsort函数 1.1、qsort函数的回顾 要模拟实现qsort函数&#xff0c;就要了解清楚qsort函数的参数以及使用方式。 我们先回顾一…...

Python 图像处理库PIL ImageOps笔记

# 返回一个指定大小的裁剪过的图像。该图像被裁剪到指定的宽高比和尺寸。 # 变量size是要求的输出尺寸&#xff0c;以像素为单位&#xff0c;是一个&#xff08;宽&#xff0c;高&#xff09;元组 # bleed&#xff1a;允许用户去掉图像的边界&#xff08;图像四个边界&#xff…...

全球南方《乡村振兴战略下传统村落文化旅游设计》许少辉八一新枝——2023学生开学季辉少许

全球南方《乡村振兴战略下传统村落文化旅游设计》许少辉八一新枝——2023学生开学季辉少许...

【C语言】指针的进阶(一)

目录 前言 1. 字符指针 2. 指针数组 3. 数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 4. 数组参数、指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5. 函数指针 前言 指针在C语言中可谓是有着举足轻重的…...

Spring学习(三):MVC

一、什么是MVC MVC&#xff08;Model-View-Controller&#xff09;是一种软件设计模式&#xff0c;用于组织和管理应用程序的代码结构。它将应用程序分为三个主要部分&#xff0c;即模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;…...

Discord集成Claude智能体:极简Docker容器化部署与安全实践

1. 项目概述&#xff1a;一个为Discord量身定制的Claude智能体运行栈 如果你和我一样&#xff0c;既想在日常工作的Discord频道里无缝调用Claude这样的强大AI助手&#xff0c;又对复杂、臃肿的Bot框架感到头疼&#xff0c;那么 nanoclaw-discord 这个项目可能就是你在找的答…...

不同CFD网格建模软件-动网格-自适应网格划分技术-课程推荐。

不同CFD网格建模软件-动网格-自适应网格划分技术-课程推荐。 数值模拟网格生成技术-01课程概览_哔哩哔哩_bilibili...

Windows动态光标优化:LuumaCursorHelper工具包详解与实战指南

1. 项目概述与核心价值最近在折腾一个挺有意思的小工具&#xff0c;起因是发现很多朋友在用LuumaCursor这款动态光标主题时&#xff0c;总会遇到一些“小麻烦”。比如&#xff0c;安装后光标在某些应用里不显示、动画卡顿&#xff0c;或者想自定义一下效果却无从下手。我自己也…...

3大核心模块+5步实战指南:Betaflight飞控固件深度解析与配置方案

3大核心模块5步实战指南&#xff1a;Betaflight飞控固件深度解析与配置方案 【免费下载链接】betaflight Open Source Flight Controller Firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight Betaflight作为开源飞控固件的标杆&#xff0c;为多旋翼和固定…...

Chlorophyll印相稀缺资源包泄露!含19世纪银盐配方数字化映射表、327张原生植物扫描底片及MJ v6.2专用--style raw参数集(限今日领取)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Chlorophyll印相的技术起源与美学范式 Chlorophyll印相&#xff08;叶绿素印相&#xff09;并非传统摄影术的延伸&#xff0c;而是一种融合植物生物化学、光敏反应与数字图像处理的跨媒介实践。其技术雏…...

ElevenLabs Enterprise方案深度拆解:从API限流策略到GDPR语音数据主权管理的7层安全加固实践

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs Enterprise方案全景概览 ElevenLabs Enterprise 是面向中大型组织构建的语音合成与语音识别一体化平台&#xff0c;专为高并发、多租户、合规性敏感场景设计。其核心能力覆盖实时TTS流式输出…...

告别‘堆已损坏’:深入理解malloc/new在Win32与x64平台下的内存管理差异

告别‘堆已损坏’&#xff1a;深入理解malloc/new在Win32与x64平台下的内存管理差异 在C/C开发中&#xff0c;内存管理一直是开发者需要面对的核心挑战之一。当项目从32位迁移到64位环境&#xff0c;或者升级Visual Studio版本时&#xff0c;许多团队都会遇到一个令人头疼的问题…...

从Java后端到AI风口:转型踩坑一年,我悟了!涨薪30%的真相是…

做了八年Java后端&#xff0c;去年咬牙转型AI应用开发。这一年踩过坑、加过班、也被面试官问倒过。但回头看&#xff0c;这条路选对了——薪资涨了30%&#xff0c;职业空间也打开了。我必须告诉那些还在犹豫要不要从后端跳出来的同行——现在的AI应用开发社招&#xff0c;确实是…...

降AI提示词大全!10个prompt让AI输出人类味+嘎嘎降AI兜底!

降AI提示词大全&#xff01;10个prompt让AI输出人类味嘎嘎降AI兜底&#xff01; 用 ChatGPT、DeepSeek、Kimi、豆包写论文最大的痛是&#xff1a;写得快但被检测判 AI、改起来比自己写还累。其实在写作环节就能预防一部分 AI 痕迹&#xff0c;靠的是会写降 AI 提示词。 这篇先给…...

英雄联盟Akari助手:从新手到高手的智能游戏伴侣完整指南

英雄联盟Akari助手&#xff1a;从新手到高手的智能游戏伴侣完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中繁琐的操…...