单链表算法题及其解析

一个url指向的页面里面有另一个url,最终有一个url指向之前出现过的url或空,这两种情形都定义为null。这样构成一个单链表。给两条这样单链表,判断里面是否存在同样的url。url以亿级计,资源不足以hash。

刚看到这个题目第一反应是二重循环,因为本人对hash也不是很了解。然后看到了亿级计,内存肯定吃不消了。网上找了下没看到这道题目的答案,仔细和群里人探讨了下,加上查了些资料,发现重点应该是单链表。

个人给出的答案非常简单,直接对比表尾项,如果表尾项相同,那么说明肯定存在同样的url,如果不相同,则不存在。

代码就略了,说下思路,分析如下:

重点是这个表式一个单链表,单链表意味着这个表不会形成环,就能找到它的尾部。而且很有意思的是,这个表是根据URL进行链接的,这会产生一个什么样的问题呢?假设当两个表的某一项指向同一个URL ‘urlA’时,它们的下一项必定指向同样的URL,直至结尾,即从'urlA'开始,两表所有项相交。那么结尾也必定相同。

反证一下:从两表结尾项向上递归,当结尾项不同时,结尾-1项也必定不同,直至递归到其中一表的表头。

原文地址:https://www.cnblogs.com/linjzong/p/2718535.html