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

链表经典题目—相交链表和链表倒数第k个节点

🎉🎉🎉欢迎莅临我的博客空间,我是池央,一个对C++和数据结构怀有无限热忱的探索者。🙌

🌸🌸🌸这里是我分享C/C++编程、数据结构应用的乐园✨

🎈🎈🎈期待与你一同在编程的海洋中遨游,探索未知的技术奥秘💞

📝专栏指路:

📘【C++】专栏:深入解析C++的奥秘,分享编程技巧与实践。

📘【数据结构】专栏:探索数据结构的魅力,助你提升编程能力。

本文主要介绍链表经典题目:相交链表和链表倒数第k个节点

相交链表

点击下方即可做题:

相交链表

题目

3806b0fbdf1740c8ae18eae1aa64ade2.png

画图分析

2b6eff1ed5e146a98f4007835f94f6c4.png

代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//先找尾结点,尾结点相同链表相交ListNode*pcurA,*pcurB;pcurA=headA;pcurB=headB;//链表长度int lenA=1;int lenB=1;while(pcurA->next){pcurA=pcurA->next;lenA++;}while(pcurB->next){pcurB=pcurB->next;lenB++;}//不相交,尾结点地址不同,不能用值来判断if(pcurA!=pcurB){return NULL;}//相交,找两个链表长度差,让长链表先走gap步,//两个链表在同时走,第一个相同的节点即为起始交点int gap=abs(lenA-lenB);//先假设ListNode*longList=headA;ListNode*shortList=headB;//假设不出来,再换if(lenA<lenB){longList=headB;shortList=headA;}//--gap走gap-1步while(gap--)//让长链表先走gap步{longList=longList->next;}while(longList!=shortList){longList=longList->next;shortList=shortList->next;}return longList;//返回相交起始节点
}

链表中倒数第k个节点

daed48edc18045cab997e2271ecc1eff.png

代码实现

#include<stdio.h>
typedef struct ListNode ListNode;
typedef int LTDataType;
struct ListNode
{ListNode* next;LTDataType data;
};
ListNode* LTBuyNode(LTDataType x)
{ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));newnode->next = NULL;newnode->data = x;return newnode;
}
ListNode* RLTPos(ListNode* head, int k)//返回链表倒数第k个节点
{ListNode* fast, * slow;fast = slow = head;//先让fast走k步while (k--){//k还没有减到0,链表已经为空了,说明k大于链表长度if (fast == NULL){return NULL;}fast = fast->next;}//再一起走,fast走到空,slow就是倒数第k个while (fast){slow = slow->next;fast = fast->next;}return slow;
}
int main()
{ListNode* listA1 = LTBuyNode(1);ListNode* listA2 = LTBuyNode(2);ListNode* listA3 = LTBuyNode(3);listA1->next = listA2;listA2->next = listA3;listA3->next = NULL;ListNode* k = RLTPos(listA1, 2);printf("%d", k->data);return 0;
}

 

 

 

 

 

相关文章:

链表经典题目—相交链表和链表倒数第k个节点

&#x1f389;&#x1f389;&#x1f389;欢迎莅临我的博客空间&#xff0c;我是池央&#xff0c;一个对C和数据结构怀有无限热忱的探索者。&#x1f64c; &#x1f338;&#x1f338;&#x1f338;这里是我分享C/C编程、数据结构应用的乐园✨ &#x1f388;&#x1f388;&…...

Java 写入 influxdb

利用Python随机生成一个1000行的csv文件 import csv import random from datetime import datetime, timedelta from random import randint, choice# 定义监控对象列表和指标名称列表 monitor_objects [Server1, Server2, Server3, DB1] metric_names [CPUUsage, MemoryUsa…...

npm的基本命令和用法

1. 安装与初始化 安装npm 首先&#xff0c;确保你的系统中已安装了Node.js&#xff0c;因为npm随Node.js一同分发。访问Node.js官网下载并安装适合你操作系统的版本。安装完成后&#xff0c;在终端或命令提示符中输入以下命令来验证安装&#xff1a; 1$ node -v 2$ npm -v …...

Python 基于深度图、RGB图生成RGBD点云数据

RGBD点云生成 一、概述1.1 定义1.2 函数讲解二、代码示例三、结果示例一、概述 1.1 定义 RGBD点云:是一种包含颜色和深度信息的点云数据。RGB代表红、绿、蓝三原色,表示点云中每个点的颜色信息;D代表深度,表示点云中每个点的相对于相机的距离信息。通过结合颜色和深度信息…...

力扣刷题--LCR 075. 数组的相对排序【简单】

题目描述 给定两个数组&#xff0c;arr1 和 arr2&#xff0c; arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序&#xff0c;使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。 …...

机器学习笔记——K近邻算法、手写数字识别

KNN算法 “物以类聚&#xff0c;人以群分”相似的数据往往拥有相同的类别 其大概原理就是一个样本归到哪一类&#xff0c;当前样本需要归到频次最高的哪个类去 也就是说有一个待分类的样本&#xff0c;然后跟他周围的k个样本来看&#xff0c;k中哪一个类最多&#xff0c;待分类…...

基于STM32实现智能园艺系统

目录 引言环境准备智能园艺系统基础代码示例&#xff1a;实现智能园艺系统 土壤湿度传感器数据读取水泵控制温湿度传感器数据读取显示系统用户输入和设置应用场景&#xff1a;智能农业与家庭园艺问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系统…...

网络原理-HTTP协议

HTTP协议 HTTP协议全称为超文本传输协议,除了能传输字符串,还能传输图片、视频、音频等。 当我们在访问网页的时候,浏览器会从服务器上下载数据,这些数据都会放在HTTP响应中,然后浏览器再根据这个HTTP响应显示出网页信息。 抓包 抓包工具本质上是一个代理工具,即我们将构造…...

【ES001】elasticsearch实战经验总结(最近更新中)

1.熟悉、梳理、总结下elasticsearch相关知识体系。 2.日常研发过程中使用较少&#xff0c;随着时间的推移&#xff0c;很快就忘得一干二净&#xff0c;所以梳理总结下&#xff0c;以备日常使用参考 3.欢迎批评指正&#xff0c;跪谢一键三连&#xff01; 文章目录 1. 1....

OpenBayes 一周速览|TripoSR 开源:1 秒即 2D 变 3D、经典 GTZAN 音乐数据集上线

公共资源速递 This Weekly Snapshots &#xff01;5 个数据集&#xff1a; FER2013 面部表情识别数据集 GTZAN 音乐流派分类数据集 MVTec-AD 工业异常检测数据集 UCAS-AOD 遥感目标检测数据集 Oxford 102 Flowers 花卉图片数据集 3 个教程&#xff1a; Latte 全球首个开…...

【论文笔记】advPattern

【论文题目】 advPattern: Physical-World Attacks on Deep Person Re-Identification via Adversarially Transformable Patterns Abstract 本文首次尝试对深度reID实施鲁棒的物理世界攻击。提出了一种新颖的攻击算法&#xff0c;称为advPattern&#xff0c;用于在衣服上生成…...

【鱼眼镜头11】Kannala-Brandt模型和Scaramuzza多项式模型区别,哪个更好?

Kannala-Brandt模型和Scaramuzza多项式模型在描述鱼眼相机畸变时都有其特定的数学表示和应用&#xff0c;但它们之间存在一些区别。以下是对两者区别的分点表示和归纳&#xff1a; 数学表示&#xff1a; Kannala-Brandt模型&#xff1a;它假设图像光心到投影点的距离和角度的多…...

微信小程序仿胖东来轮播和背景效果(有效果图)

效果图 .wxml <view class"swiper-index" style"--width--:{{windowWidth}}px;"><image src"{{swiperList[(cardCur bgIndex -1?swiperList.length - 1:cardCur bgIndex > swiperList.length -1?0:cardCur bgIndex)]}}" clas…...

10.SpringBoot 统一处理功能

文章目录 1.拦截器1.1在代码中的应用1.1.1定义拦截器1.1.2注册配置拦截器 1.2拦截器的作用1.3拦截器的实现 2.统一数据返回格式2.1 为什么需要统⼀数据返回格式&#xff1f;2.2 统⼀数据返回格式的实现 3.统一异常处理4.SpringBoot专业版创建项目无Java8版本怎么办&#xff1f;…...

【八股系列】为什么会有webpack配置?webpack的构建流程是什么?

文章目录 1. webpack是什么&#xff1f;2. 为什么需要webpack&#xff1f;3. webpack构建原理4. 构建流程通常包括以下步骤5. Webpack构建流程图 1. webpack是什么&#xff1f; Webpack是一个模块打包工具&#xff0c;它可以将项目中的各种静态资源&#xff0c;如JavaScript、…...

sdf 测试-2-openssl

任务详情 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,参考网内容 和AI要给出详细过程&#xff0c;否则不得分。 0. 根据gmt0018标准&#xff0c;如何调用接口实现基于SM3求你的学号姓名的SM3值&#xff1f;&#xff08;5‘&#xff09; 使用OpenSSL实现SDF接…...

头歌springboot初体验

您好&#xff01;看起来您可能在询问关于Spring Boot的入门体验。Spring Boot是一个开源的Java框架&#xff0c;它设计用来简化Spring应用程序的初始搭建和开发过程。以下是一些Spring Boot的基本概念和入门步骤&#xff1a; Spring Boot简介&#xff1a; Spring Boot是Spring框…...

矩阵对角化在机器学习中的奥秘与应用

在机器学习的广阔领域中&#xff0c;矩阵对角化作为一种重要的数学工具&#xff0c;扮演着不可或缺的角色。从基础的线性代数理论到复杂的机器学习算法&#xff0c;矩阵对角化都在其中发挥着重要的作用。 矩阵对角化的概念与原理 矩阵对角化是矩阵理论中的一个基本概念&#x…...

操作MySQL数据库

【一】针对库的增删查改&#xff08;文件夹&#xff09; 【1】创建数据库 &#xff08;1&#xff09;语法 创建一个存储数据表的文件夹。 注意&#xff1a;mysql中的编码字符集中utf-8&#xff0c;要换成utf8mb4。SQL语句中的中括号部分表示可选。 create database [if no…...

Linux shell 文件生成文件脚本(模拟生成文件、生成大量文件)

文章目录 Linux shell 文件生成文件脚本 Linux shell 文件生成文件脚本 TARGET_DIR&#xff1a;生成文件路径 NUM_FILES&#xff1a;生成文件数量 FILE_SIZE&#xff1a;生成文件大小&#xff08;KB&#xff09; #!/bin/bashset -e set -u# Directory where files will be cr…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...