最朴素的思路是遍历一个链表,检测是否出现在另一个链表中;对第一步的遍历,时间复杂度为m,第二部的查找,复杂度可以接近log(n)
按照你的想法,复杂度应该是m*n,可否有更高效的呢?
@云眸: 其实是m*log(n)
如果两个有相交,则交点之后的所有元素为共有元素,所以只需要判断每个链表的最后一个元素是否相等,则可判断两个链表是否相交。
如果为双向链表中有一个为共有元素。那该两个链表为同一链表。只需去其中一个链表的元素,在另一链表中遍历是否有相同节点即可。
需要澄清两个问题,首先,链表不是有序的;其次,相交的意思是只有一个共有节点;
@云眸: 根据链表的结构来看,如果有一个共有节点,则其前节点指针和后节点指针都是一样的,指向相投的节点。这才是严格意义的共有。难道只是数据共有?
@走着。。: 是指向堆内存里的同一个节点。。。
支持云眸的说法,否则的话,什么内存里的一“点”?4个字节,2个字节,1个字节还是一个比特?我的理解这个“点”,是一个数据结构。当然,如果你不是这个意思,那么。。。