当前位置: 首页 > 网络应用技术

有针对“链接列表”的技术技术

时间:2023-03-06 18:37:02 网络应用技术

  在采访中,链接列表通常是一个简单的问题。尽管问题并不困难,但面试官经常由于疏忽而获得细节,导致在短时间内无法无漏洞。

  今天,我总结了链接列表的共同知识点。放弃该集合,遵循公共帐户[程序员注释],在访谈前阅读,然后快速清除链式表类型。

  不管链接列表中是否有奇数数字,甚至几个节点,慢速的两个指针都可以从头开始。或接下来,慢速指向中间节点。

  在周期结束后,请参见下图。

  继续向后移动两个相邻的指针,并转动两个指针之间的相邻关系。在保存之前,请注意帖子-Pointer的下一个节点,并最终将原始头放在null旁边。

  如下图所示,红色代表第一步,蓝色代表第二步。

  给定两个链接列表,依次请求其中一个节点,然后合并两个链接列表。

  下图是一个常见的组合想法。这个想法不仅适合选择节点合并,还适用于将两个有序链接的列表合并到有序的链接列表中。

  首先,将一个虚拟的头节点确定为合并后链接列表的虚拟头节点,链接列表的最后一个节点指向带有尾指针的合并链。east循环连接到heada,heada已连接到头b。,然后将尾巴更新为头脑。

  在下图中,红线代表周期的第一轮,蓝线代表周期的第二轮。

  主题:链接列表头的头节点,请根据促销令进行排列,然后返回分类的链接列表。

  链接列表的特征导致任何两个位置的节点无法轻易交换,因此他们不能使用快速的排序算法。

  合并和排序非常适合链接列表排序。将底部到底部的重新计算,两个链接的列表结合在子连接列表之后的长度2中,长度为1;

  实施过程在上述基本操作中使用“快速和缓慢的可怜的中介”将链接列表分为两个;使用“组合链接列表”将分类的子链接列表合并到有序的长链接列表中。

  1.给您一个头节点节点给您,确定链接列表中是否有戒指?

  这个问题相对简单,可以使用快速缓慢的指针。慢速指针一次一次步骤,一次一次步骤。如果快速指针在结束前相遇,请与慢速指针相遇。如果您没有见面,就没有戒指。

  2.如果链接列表具有戒指,则是环的起点。

  这是上一个问题的后续,首先清除符号的含义:

  X:头节与红点之间的长度;

  Y:进入红点之间的长度红点;

  M:红点与入口红点之间的长度;

  R:环的整个长度;

  t:t在聚会点的聚会点开会。

  假设快速缓慢指针的相遇点会在环上相遇。

  快速指针之间的距离是慢速指针之间的距离的两倍,有两个相等的形式:

  2t = x + n* r + y(快速指针);

  t = x + y(慢速指针)

  您可以得到x = n*r -y;启动x = m +(n-)*R.解释相遇后,慢速指针将被放回起点。在快速指针一次仅需一步之后,两个指针再次相遇的点是入口点。

  原始:https://juejin.cn/post/7100198006347005966