检测两个链表是否合并
两个链表
有如下的两个链表1和2,检测链表有没有合并,如果有合并指出链表的值。
算法简述
合并到意思是两个链表当前指针的下一个节点的地址相同。那最直观的方法就是已最小表为基准表,遍历该基准表,并判断另一个表中是否有节点的指针指向基准表的当前节点,直到基准表遍历结束,这种方法的时间复杂度式O(n^2),准确的说应该是O(n * m)。
分析
有没有更快的处理方式了呢?
改进
先遍历一遍最大的链表,并且组织一个Map<Node.next,Node.data>;
然后再遍历小的链表,并通过map查询是否存在Key即可,存在即说明有合并,不存在说明没有合并;
时间复杂度 = O(n)。
版权声明: 本文为 InfoQ 作者【行下一首歌】的原创文章。
原文链接:【http://xie.infoq.cn/article/c5b8d666566a9c719d9cd30ca】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论