- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要找到链表中的循环,我们只需使用两个指针慢速和快速即可。
slow = head->next;
fast = head->next->next;
while(slow != fast)
{
slow = head->next;
fast = head->next->next;
if(!slow || !fast)
{
cout<<" No Loop ";
break;
}
}
这样我们就可以找到链表中的循环了。现在,如果我让慢指针跳2个节点,快跳3个节点,或者慢3个节点,快4个节点,会有什么影响……
我在代码中尝试过这个,但每次都得到正确的结果。有人可以解释一下吗?另外,我立即想到的另一件事是,我们可以通过某种特定的慢指针和快指针选择进入无限循环,但找不到一个。
最佳答案
Change in number of hopes will only diminish cycle finding process. It wouldn't put you in infinite loop.
节点数要么是奇数,要么是偶数。所以
Case A : For odd number of nodes (3 or 5 nodes for example)
Case B : For even number of nodes (2 or 4nodes for example)
参见测试示例场景:通用解决方案是:GCD(慢速运动,快运动)将是循环内节点在时间上胶体的点。
(偶数,奇数)慢速移动 2,快移动 3:在情况 A 和 B 中都会被捕获。因为在情况 A 中,快速将继续返回到所选节点(每隔三个节点),而慢会交替变化。
(奇数,偶数)慢速移动 3,快移动 4:在情况 A 和 B 中都会被捕获。因为在情况 A 中,快速将继续返回到每四个节点,并在每三个节点处慢速。这样他们应该会在循环中的第 12 个位置上发生碰撞。
(odd, odd)慢移动1,快移动3:在情况A和B中都被捕获。两者的GCD都是3,所以他们应该在即将到来的第三个节点相遇。
(偶,偶)慢移动2,快移动4:在情况A和B中都被捕获。道理相同。
关于c - 如果我们在链表中查找循环时改变慢指针和快指针的跳数会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527079/
我正在尝试使用 nx 在图中找到一些特定节点(比方说 l 节点)的 1 跳、2 跳,如果需要,k 跳邻居。 single_source_dijkstra_path_length. 每个步骤的时间复杂度
假设在下一段中我的光标位于第一句中的第一个are上(希望我可以突出显示它,但我不能这样...... )。按两次 ff 后,第一句话就会傻瓜,然后of 。再按下去我将一事无成。 Some people
给定一个无向图,一个起始顶点和一个结束顶点。求出从源到汇的步行次数(这样一个顶点可以被多次访问)正好涉及 h 跳。例如,如果图形是三角形,则具有 h 跳的此类路径的数量由第 h 个 Jakobstah
我正在制作 Winston Wolf 的交互式 map 。我有一张世界地图,每个大陆都可以点击并显示该大陆的国家。当我点击非洲大陆时,页面会跳转到非洲国家(如您所料)。我的问题是,我可以阻止它跳跃吗?
这是我的第一个问题,所以如果我问错了,我很抱歉。 在我的实验中,多个 android 设备使用 WiFi Direct 连接。为了利用无线 tx 的广播特性,所有设备都加入一个多播组来交换它们的信息。
我最近开发了一个 WCF Facade 服务。我是 WCF 的新手,无法理解安全实现部分。 服务如下: 一个 asp.net 公共(public)网站有一个 WCF 客户端,它访问: DMZ 中的 W
序言: 当问楼梯问题时,通常给定的允许步幅数组是 [1,2,3] 在 SO 上看到很多相同问题的例子,比如 n-steps-with-1-2-or-3-steps-taken-how-many-way
我是一名优秀的程序员,十分优秀!