首页 > 其他 > 详细

160-相交链表

时间:2021-03-05 22:19:04      阅读:27      评论:0      收藏:0      [点我收藏+]

leetcode题解——相交链表

题目如下

编写一个程序,找到两个单链表相交的起始节点。

解题思路

  1. 求A和B的长度
  2. 设两个指针a和b分别指向链表A和B,指针指向的位置由两个链表的长度差决定
  3. 同步遍历两个链表,若两个指针指向同一个地址,则这个结点为相交结点
  4. 否则两个链表不相交
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

 //相交链表
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    struct ListNode *a=headA, *b=headB;
    int len_a=0, len_b=0;
    while(a){
        a=a->next;
        len_a++;
    }
    while(b){
        b=b->next;
        len_b++;
    }
    a=headA;
    b=headB;
    while(len_a!=len_b){
        if(len_a>len_b){
            a=a->next;
            len_a--;
        }else if(len_a<len_b){
            b=b->next;
            len_b--;
        }
    }
    while(a&&b){
        if(a==b){
            return a;
        }else{
            a=a->next;
            b=b->next;
        }
    }
    return NULL;
}

160-相交链表

原文:https://www.cnblogs.com/karkinos/p/14488212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!