160.相交链表

1.题目描述:

  编写一个程序,找到两个单链表相交的起始节点。

2.解题思路及代码

  设置双指针,分别指向两个链表头部,向后遍历,到达表尾后指向另一指针的头部,则某一时刻两个指针指向的结点相同,若链表相交,则指向非空结点,若不相交,则同指向NULL.

  代码如下:

/**
 * 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 pa=headA;
        ListNode pb=headB;
        while(pa!=pb){
            pa=(pa==null)?headB:pa.next;
            pb=(pb==null)?headA:pb.next;
        }
        return pa;
    }
}

3.算法分析:

  时间复杂度:O(M+N)

代码参考:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/solution/tu-jie-xiang-jiao-lian-biao-by-user7208t/

  

原文地址:https://www.cnblogs.com/teensSpirit-code-life/p/11729875.html