相交链表00

题目链接

相交链表

题目描述

相交链表00_第1张图片
相交链表00_第2张图片
相交链表00_第3张图片

注意点

  • 保证 整个链式结构中不存在环
  • 函数返回结果后,链表必须 保持其原始结构
  • 如果 listA 和 listB 没有交点,intersectVal 为 0

解答思路

  • 两个链表从头开始遍历,如果其是在同一个位置处相交,则在第一次遍历就可找到交汇处,如果其不在同一个位置相交,则A链表遍历后接上B链表,B链表遍历后接上A链表,在第二次遍历时可在同一个位置找到交汇处,如果两个链表不相交,则会在第二次遍历后共同指向空

代码

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode nodeA = headA;
        ListNode nodeB = headB;
        while (nodeA != null || nodeB != null) {
            if (nodeA == null) {
                nodeA = headB;
            }
            if (nodeB == null) {
                nodeB = headA;
            }
            if (nodeA == nodeB) {
                return nodeA;
            }
            nodeA = nodeA.next;
            nodeB = nodeB.next;
        }
        return null;
    }
}

关键点

你可能感兴趣的:(算法TOP100,链表,数据结构,leetcode,java)