题目网址https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
思路:分别求出两个链表的长度,求出差值,让长的链表先走差值步
接着在依次向后遍历,比较结点是否相等。
/**
* 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) {
int len1 = size(headA);
int len2 = size(headB);
if(len1 > len2){
int offset = len1 - len2;
for(int i = 0 ; i < offset;i++){
headA = headA.next;
}
}else{
int offset = len2 - len1;
for(int i = 0; i < offset ; i++){
headB = headB.next;
}
}
while(headA != null && headB != null){
if(headA == headB){
return headA;
}
headA = headA.next;
headB = headB.next;
}
return null;
}
public int size(ListNode head){
int size = 0;
for(ListNode cur = head; cur != null; cur = cur.next){
size++;
}
return size;
}
}