【牛客刷题专栏】0x24:JZ23 链表中环的入口结点(C语言编程题)

news/2025/2/21 7:38:37/

前言

  • 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失
  • 个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

目录

  • 前言
  • 问题描述:
  • 举例:
  • 解法思路:
  • 代码结果:
  • 结束语


问题描述:

  • 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。

  • 数据范围: n≤10000,1<=结点值<=10000

  • 要求:空间复杂度 O(1),时间复杂度 O(n)

  • 例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:
    在这里插入图片描述

  • 可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。

  • 输入描述:
    输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据第二段是否为空将这两段组装成一个无环或者有环单链表

  • 返回值描述:
    返回链表的环的入口结点即可,我们后台程序会打印这个结点对应的结点值;若没有,则返回对应编程语言的空结点即可。


举例:

//示例1:
//输入:
{1,2},{3,4,5}
//返回值:
3
//说明:返回环形链表入口结点,我们后台程序会打印该环形链表入口结点对应的结点值,即3   
//==========================
//示例2:
//输入:
{1},{}
//返回值:
"null"
//说明:没有环,返回对应编程语言的空结点,后台程序会打印"null"   
//==========================
//示例3:
//输入:
{},{2}
//返回值:
2
//说明:环的部分只有一个结点,所以返回该环形链表入口结点,后台程序打印该结点对应的结点值,即2   

解法思路:

  • 用一个数组保存地址,然后一个一个对比,返回重复的值

代码结果:

/*** struct ListNode {*	int val;*	struct ListNode *next;* };** C语言声明定义全局变量请加上static,防止重复定义*/
/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pHead ListNode类 * @return ListNode类*/
struct ListNode* EntryNodeOfLoop(struct ListNode* pHead ) {// write code herestruct ListNode* add_list[10000];int add_count=0;struct ListNode* node=pHead;while(node){add_list[add_count]=node;for(int i=0;i<add_count;i++){if(add_list[add_count]==add_list[i]){return add_list[add_count];}}add_count++;node=node->next;}return NULL;
}


结束语

  • 以上就是该C语言编程题的内容。可以在牛客尝试刷几道题目来练习实践。牛客网刷题(点击可以跳转),可以尝试注册使用。
  • 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

http://www.ppmy.cn/news/54115.html

相关文章

Lesson13 IP协议

IP: 提供一种能力,将数据从A主机送到B主机的能力,但不一定会成功 主机 : 配有 IP 地址 , 但是不进行路由控制的设备 ; 路由器: 即配有 IP 地址 , 又能进行路由控制 ; 节点 : 主机和路由器的统称; 协议头格式 如何封装和解包: 定长报头 自描述字段 如何交付(分用) : 8…

ArrayList的扩容机制

前置知识 ArrayList的底层实现是一个Object[]&#xff0c;而LinkedList的底层实现是一个链表 ArrayList与LinkedList相对比&#xff1a; ArrayList在随机访问时可以做到O(1)&#xff0c;但是LinkedList的随机访问就是遍历链表&#xff0c;所以时间复杂度是O(N)ArrayList在插入…

API 扫盲贴,8分钟快速搞懂 API 框架

API&#xff08;应用程序编程接口&#xff09;是一种传递信息和指令的工具&#xff0c;它通过不同的功能和协议等手段&#xff0c;允许不同的软件或系统之间进行通信和交互。作为程序员或开发人员&#xff0c;API 是你日常工作中必不可少的组成部分。在本文中&#xff0c;我们将…

Linux第三章

文章目录 前言一、Linux的root用户1.用户和用户组2.查看权限控制信息3.chmod命令4.chown命令 总结 前言 一、Linux的root用户 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;…

换肤实现及LayoutInflater原理

文章目录 背景实现换肤步骤解析插件 apk 的包信息获取插件 apk 的 Resources 对象替换资源 简单的插件化换肤实现和存在的问题换肤如何动态刷新&#xff1f;控件换肤刷新的性能考虑如何降低 xml 布局中 View 的替换成本LayoutInflater 原理LayoutInflater.Factory2 替换 View 小…

【Linux基本指令和权限(1)】

本文思维导图&#xff1a; 文章目录 一、Linux操作的特点二、使用指令从Xhell登录云服务器三、基本指令1.ls指令2. pwd指令&#xff1a;3.cd指令4. touch指令5. rm指令 写在最后 Linux是一个操作系统&#xff0c;操作系统是一款做软硬件管理的软件。 一、Linux操作的特点 Li…

基于springboot+mysql+html实现智能停车场管理系统

基于springbootmysqlhtml实现智能停车场管理系统 一、系统介绍1、系统主要功能&#xff1a;2.涉及技术框架&#xff1a;3.本项目所用环境&#xff1a; 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能&#xff1a; 系统管理&#xff1a;角色管理、接口管…

AODV路由算法在无线传感器网络中的设计与仿真(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 此代码用于MATLAB GUI&#xff0c;其中为WSN实现了AODV路由协议。源节点每次都会随着数据包的数量而变化。GUI的快照已附加。它…