前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode160.相交链表

LeetCode160.相交链表

作者头像
mathor
发布2018-08-17 15:46:39
5870
发布2018-08-17 15:46:39
举报
文章被收录于专栏:mathor
题目链接:LeetCode160

 两种做法,第一种,创建一个HashSet,先把A链表的所有节点保存到Set中,然后遍历B链表,将B链表的所有节点保存进去,保存时进行判断,如果Set中已经有这个节点了,就直接return这个节点,否则就加进去  第二种做法,定义两个节点end1,end2,定义两个变量len1,len2,遍历A链表,将end1指到A链表的尾部,然后记录A链表的长度len1,B链表也是如此,然后判断其尾节点是否相同,如果尾节点不相同就直接return null,反之,让len1和len2中较大的那个链表先遍历Math.abs(len1-len2)的长度,然后两个链表再同时遍历,遍历到节点相同时停止,返回该节点

代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode end1 = headA,end2 = headB;
        int len1 = 0,len2 = 0;
        while(end1 != null) {
            end1 = end1.next;
            len1++;
        }
        while(end2 != null) {
            end2 = end2.next;
            len2++;
        }
        if(end1 != end2)
            return null;
        for(int i = 1;i <= Math.abs(len1-len2);i++) {
            if(len1 > len2)
                headA = headA.next;
            else 
                headB = headB.next;
        }
        while(headA != null && headB != null) {
            if(headA == headB)
                return headA;
            headA = headA.next;
            headB = headB.next;
        }
        return null;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目链接:LeetCode160
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档