码迷,mamicode.com
首页 > 其他好文 > 详细

Intersection of Two Linked Lists

时间:2015-03-05 23:39:24      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

编程之美上有这题,先计算这两链表的长度,然后从这两链表长度相等处扫一遍,找到相同节点就跳出即可。

O(n)的时间复杂度 O(1)的空间开销

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
     struct ListNode *p1 = headA,*p2 = headB,*p = NULL;
        int lenA = 0 , lenB = 0;
        while(p1){
            p1 = p1->next;
            lenA++;
        }
        while(p2){
            p2 = p2->next;
            lenB++;
        }
         p1 = headA;p2 = headB;
        if(lenA>lenB){
            for(int i = 0 ; i < lenA-lenB ; i++){
                p1 = p1->next;
            }
        }else {
            for(int i = 0 ; i <lenB-lenA ; i++){
                p2 = p2->next;
            }
        }
        for(;p1;p1 = p1->next,p2 = p2->next){
            if(p1 == p2){
                p = p1;
                break;
            }
        }
        return p;
}

 

Intersection of Two Linked Lists

标签:

原文地址:http://www.cnblogs.com/llei1573/p/4316901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!