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

手机网站建设公司热线电话太原关键词优化公司

手机网站建设公司热线电话,太原关键词优化公司,在线wordpress,web个人网页设计题目 给一个长度为n链表&#xff0c;若其中包含环&#xff0c;请找出该链表的环的入口结点&#xff0c;否则&#xff0c;返回null。 数据范围&#xff1a;1<结点值<10000 要求&#xff1a;空间复杂度O(1)&#xff0c;时间复杂度O(n) 例如&#xff0c;输入{1,2},{3,4,5…

题目


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

数据范围: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

思路


首先,题目中给的链表并不一定是有环的,所以需要先判断链表是否有环。可以在通过快慢指针的方式来判断,如果有环,则可以计算出环节点的个数。

然后,定义两个指针初始化指向头节点,第一个指针先前进环节点个数,之后两个节点同时前进,到节点值相等的节点就是环的入口节点。

本题还可以使用哈希表unordered_set来记录经过的节点来解决,但是这个方法的空间复杂度时O(n)。

另外,我的解法写的比较复杂,主要是为了理顺思路。使用快慢指针可以用更简洁的代码解决。

解答代码


/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
*/
class Solution {
public:ListNode* EntryNodeOfLoop(ListNode* pHead) {if (pHead == nullptr || pHead->next == nullptr) {return nullptr;}// 获取到环节点的个数int loop_node_num = GetLoopNodeNum(pHead);if (loop_node_num == 0) {// 链表中没有环return nullptr;}ListNode* pNode1 = pHead;ListNode* pNode2 = pHead;// 第一个节点先前进loop_node_num步for (int i = 0; i < loop_node_num; i++) {pNode1 = pNode1->next;}// 两个节点同时前进while (pNode1->val != pNode2->val) {pNode1 = pNode1->next;pNode2 = pNode2->next;}// 相等的点就是环的入口return pNode1;  }int GetLoopNodeNum(ListNode* pHead) {int loop_node_num = 0;// 定义快慢指针ListNode* fast = pHead->next;ListNode* slow = pHead;// 判断是否有环bool is_loop = false;while (fast != nullptr) {if (fast->val == slow->val) {is_loop = true;break;} else {if (fast->next != nullptr) {fast = fast->next->next;slow = slow->next;} else {break;}}}// 有环,则步进慢指针计算环的节点数if (is_loop) {int val = slow->val;loop_node_num = 1; // 加上自身while (val != slow->next->val) {++loop_node_num;slow = slow->next;}}return loop_node_num;}
};
http://www.hkea.cn/news/960985/

相关文章:

  • 网站域名授权怎么做市场营销案例100例
  • kindeditor代码高亮 wordpressseo优化排名经验
  • 家乡介绍网页设计上海网站排名优化
  • 广州黄埔网站制作百度sem是什么意思
  • 网站流量分析网站网络推广营销网
  • 化妆品网站建设计划书网站维护是什么意思
  • 建设局网站公告宣传推广的形式有哪些
  • 网站基本架构设计的主要步骤什么软件可以排名次
  • 代做毕业设计网站多少钱网站推广交换链接
  • 苹果指争议广告lg广告北京seo公司网站
  • flash网站制作公司能打开各种网站的浏览器下载
  • 网站开发是叫系统吗站长工具seo排名查询
  • 站长之家html模板西安网站seo技术厂家
  • 重庆网站建设 渝seo交流论坛
  • 洛阳市网站建设宁波seo网络推广软件系统
  • 做网站用建站模版好还是定制好百度站点
  • 关注济南网站建设深圳市企业网站seo
  • 安溪县住房和城乡建设网站色盲
  • 合肥做英文网站今日头条国际军事新闻
  • 西安有哪些做网站的公司好邵阳疫情最新消息
  • asia域名的网站竞价广告
  • 怎么注册公司支付宝账号seo求职信息
  • 多语言网站怎么做网络推广平台公司
  • 山东公司注册网站怎样写营销策划方案
  • 河北省香河县建设局网站中国互联网协会
  • 北京丰台区网站建设游戏推广赚佣金的平台
  • 网站没排名怎么办搜索引擎广告优化
  • wordpress内容主题模板网络网站推广选择乐云seo
  • 电子元器件商城网站建设百度开户怎么开
  • 企业网站开发基本流程百度博客收录提交入口