leetcode linkedlist 两个链表的第一个公共交点

O

问题

解决方案

代码


/*
思路: 开始遍历两遍链表获取两个表的长度,比较长度让长的一个先走差值个步长,

   再两个一起走。这样虽然速度一样,但是距离不一样,肯定会有相交的一天。 

- 
- 
- - 
- - 
- 
*/

class Solution {
    
    
public:
   ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
    
    
       int length1 = 0 , length2 = 0;
       ListNode* temp1 = pHead1,*temp2 = pHead2;
       
       while(pHead1){
    
    
           length1++;
           pHead1 = pHead1->next;
       }
       while(pHead2){
    
    
           length2++;
           pHead2 = pHead2->next;
       }
       if(length2> length1){
    
    
           for(int i = 0;i<length2-length1;i++){
    
    
               temp2 = temp2->next;                
           }
       }
       else{
    
    
           for(int i = 0;i<length1-length2;i++){
    
    
               temp1 = temp1->next;                
           } 
       }
       while(temp2!= temp1){
    
    
           if(temp2)temp2 = temp2->next;
           else temp2 = pHead2;
           if(temp1)temp1 = temp1->next;
           else temp1 = pHead1;            
       
       }
       return temp1;
       
   }
};

总结与反思

  1. 注意考虑边界问题。

猜你喜欢

转载自blog.csdn.net/liupeng19970119/article/details/114240082