23.相交链表
方法一:哈希集合
/*** 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) {Set<ListNode> visited = new HashSet<>();ListNode tmp = headA;while(tmp!=null){visited.add(tmp);tmp = tmp.next;}tmp = headB;while(tmp != null){if(visited.contains(tmp)){return tmp;}tmp = tmp.next;}return 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) {if(headA == null || headB == null){return null;}ListNode pA = headA;ListNode pB = headB;while(pA != pB){pA = pA == null ? headB : pA.next;pB = pB == null ? headA : pB.next;}return pA;}
}