《LeetCode力扣练习》代码随想录——双指针法(链表相交---Java)

《LeetCode力扣练习》代码随想录——双指针法(链表相交—Java)



刷题思路来源于 代码随想录

面试题 02.07. 链表相交
  • 双指针
    /**
     * 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=0;
            int lenB=0;
    
            ListNode temp=headA;
    
            while(temp!=null){
                lenA++;
                temp=temp.next;
            }
    
            temp=headB;
    
            while(temp!=null){
                lenB++;
                temp=temp.next;
            }
    
            int diff=lenA>lenB?(lenA-lenB):(lenB-lenA);
    
            if(lenA>lenB){
                while(diff>0){
                    headA=headA.next;
                    diff--;
                }
            }else{
                while(diff>0){
                    headB=headB.next;
                    diff--;
                }
            }
    
            int count=lenA>lenB?lenB:lenA;
    
            while(count>0){
    
                if(headA==headB){
                    return headA;
                }
    
                headA=headA.next;
                headB=headB.next;
    
                count--;
    
            }
    
            return null;
            
        }
    }
    

你可能感兴趣的:(LeetCode,leetcode,链表,java)