LeetCode160.相交链表

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

例如,下面的两个链表:

A:          a1 → a2

c1 → c2 → c3

B: b1 → b2 → b3

在节点 c1 开始相交。

注意:

  • 如果两个链表没有交点,返回 null.
  • 在返回结果后,两个链表仍须保持原有的结构。
  • 可假定整个链表结构中没有循环。
  • 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
    /**
    * 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) {
    if (headA == null || headB == null) {
    return null;
    }
    int lenA = len(headA);
    int lenB = len(headB);
    if (lenA>lenB) {
    while (lenA != lenB) {
    headA = headA.next;
    lenA--;
    }
    } else {
    while (lenA != lenB) {
    headB = headB.next;
    lenB--;
    }
    }
    while (headA != headB) {
    headA = headA.next;
    headB = headB.next;
    } return headA;
    }
    private int len(ListNode headA) {
    int len = 0;
    while (headA != null) {
    headA = headA.next;
    len++;
    }
    return len;
    }
    }
上一篇:SSL/TLS抓包出现提示Ignored Unknown Record


下一篇:WordPress部署