0
点赞
收藏
分享

微信扫一扫

07. 链表相交

海滨公园 2022-03-12 阅读 43

LeetCode

暴力法

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode nodeA = headA;

        while(nodeA != null){
            ListNode nodeB = headB;

            while(nodeB != null){
                
                if(nodeA == nodeB) return nodeA;

                nodeB = nodeB.next;
            }

            nodeA = nodeA.next;
        }
        return null;
    }
}

把链表 A 的每一个节点都遍历一次链表 B 的全部节点,存在相同节点则返回,否则返回 null

  • 空间复杂度:O(1)
  • 时间复杂度:O(n^2)

双指针法

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode A = headA;
        ListNode B = headB;
        while(A != B){
            A = A == null? headA: A.next;
            B = B == null? headB: B.next;
        }
        return A;
    }
}

参考题解

这里如果没有公共节点的话时间复杂度会降到最差

  • 空间复杂度:O(1)
  • 时间复杂度:O(a + b)
举报

相关推荐

0 条评论