您的位置:首页 > 其它

leetcode-160 Intersection of Two Linked Lists

2015-04-15 10:11 288 查看
剑指offer上的题目,自己的比较挫的代码

<span style="font-family:Microsoft YaHei;font-size:14px;">/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if(headA == NULL || headB == NULL) return NULL;
        int lenA = 0,lenB = 0;
        ListNode *workA = headA,*workB = headB;
        lenA = lenList(headA);
        lenB = lenList(headB);
        
        if(lenA > lenB){
            int gap = lenA - lenB;
            while(gap){
                workA = workA->next;
                gap--;
            }
        }else if(lenA < lenB){
            int gap = lenB - lenA;
            while(gap){
                workB = workB->next;
                gap--;
            }
        }
        while(workA != workB){
            workA = workA->next;
            workB = workB->next;
        }
        return workA;
        
    }
    
    int lenList(ListNode *node){
        int len = 0;
        while(node){
            len++;
            node = node->next;
        }
        return len;
    }
};</span>


比较屌的做法(concise clean nice elegant)

<span style="font-family:Microsoft YaHei;font-size:14px;">/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if(headA == NULL || headB == NULL) return NULL;
        ListNode *workA = headA,*workB = headB;
        while(workA != NULL && workB != NULL && workA != workB){
            workA =workA->next;
            workB = workB->next;
            
            if(workA == workB) return workA;
            
            if(workA == NULL) workA = headB;
            if(workB == NULL) workB = headA;
        }
        
        return workA;
    }
    
    
};</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: