【LeetCode】Day8-相交链表

题目

160. 相交链表【简单】

题解

哈希表

感慨虽然刷题还没刷几天,但还是有用的,现在简单题基本能有思路了,前几天遇到哈希表,现在已经能自己做出来了,开心

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        Set<ListNode>hashSet=new HashSet<ListNode>();
        while(headA!=null){
            hashSet.add(headA);
            headA=headA.next;
        }
        while(headB!=null){
            if(hashSet.contains(headB))
                return headB;
            headB=headB.next;
        }
        return null;
    }
}

时间复杂度: O ( m + n ) O(m+n) O(m+n)
空间复杂度: O ( n ) O(n) O(n)

双指针

和昨天的环形链表极其像啊

这里的图解写的特别好,看到高赞的一句话描述这个解法,“走到尽头见不到你,于是走过你来时的路,等到相遇时才发现,你也走过我来时的路”,超级形象

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        //二者有一方为空,肯定没有相交结点
        if(headA==null||headB==null)
            return null;
        ListNode pA=headA;
        ListNode pB=headB;
        while(pA!=pB){
            pA = pA==null? headB:pA.next; //注意headB别写成pB了
            pB = pB==null? headA:pB.next;
        }
        return pA;
    }
}

时间复杂度: O ( m + n ) O(m+n) O(m+n)
空间复杂度: O ( 1 ) O(1) O(1)
,优于哈希表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值