美文网首页
leetcode160 链表相交节点

leetcode160 链表相交节点

作者: 数据挖掘小菜 | 来源:发表于2017-11-21 23:02 被阅读0次

leetcode160

Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2

c1 → c2 → c3

B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
If the two linked lists have no intersection at all, return null.
The linked lists must retain their original structure after the function returns.
You may assume there are no cycles anywhere in the entire linked structure.
Your code should preferably run in O(n) time and use only O(1) memory.

/**
 * Created by hadoop on 17-10-2.
 */
public class 两个链表的相交节点 {
    /*该方法十分巧妙,如果两个链表的长度相等,依次比较每个节点是否相等即可。一般的做法是将两个链表的长度设置相等即可。这里利用
    两次循环和两个指针,第一次将不同的元素略过,第二次如果有相交的元素则返回相交的节点,如果没有,就返回null。如果短的链表已经循环完毕
    就将指针指向不同的链表的头结点。
     */
    public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
       if (headA==null || headB == null)
           return null;
        ListNode curA = headA;
        ListNode curB = headB;

        while (curA != curB){
            curA = curA == null ? headB : curA.next;
            curB = curB == null ? headA : curB.next;
        }

        return curA;

    }

    public static void main(String[] args){
        ListNode head = new ListNode(0);
        ListNode head1 = new ListNode(1);
        ListNode node = new ListNode(2);
        ListNode node2 = new ListNode(3);


        head.next = node;
        head1.next = node;
        node.next = node2;

        ListNode result = getIntersectionNode(head,head1);
        System.out.print(result.val);
    }
}

相关文章

  • leetcode160 链表相交节点

    leetcode160 Write a program to find the node at which the...

  • leetcode160-链表相交节点

    1 简介 题目传送门leetcode160。 这个问题主要解决的是,找寻两个链表中相交的链表。为此,我们首先应该明...

  • leetcode的题目160

    160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。...

  • 2019-01-25 Day 20

    1.#### 相交链表编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 ...

  • 160. 相交链表

    160. 相交链表 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示...

  • LeetCode刷题分类之双指针160. 相交链表

    160. 相交链表 题目 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交...

  • 【LeetCode】链表专题

    160.相交链表 返回两个链表相交的节点 19.删除链表的倒数第N个节点 返回链表的头结点。 21.合并两个有序链表

  • 求两个链表的交点

    已知链表A的头节点指针headA,链表B的头节点指针headB,两个链表相交,求两链表交点对应的节点。[](Lee...

  • LeetCode | 链表相关题目

    LeetCode 160.相交链表 编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:示例在节点 c1...

  • 算法题之---《链表相交》

    首先,我们要知道链表相交意味着什么? 根据链表的特质,只要两个链表相交,也就是说他们有共同的节点,那么从共同的节点...

网友评论

      本文标题:leetcode160 链表相交节点

      本文链接:https://www.haomeiwen.com/subject/dipgvxtx.html