当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 【leetcode 简单】第三十六题 相交链表

【leetcode 简单】第三十六题 相交链表

2018年08月18日  | 移动技术网IT编程  | 我要评论

暴雪haobc,看看gps地图网,贵妇深藏不露

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

 

例如,下面的两个链表

a:          a1 → a2
                   ↘
                     c1 → c2 → c3
                   ↗            
b:     b1 → b2 → b3

在节点 c1 开始相交。

 

注意:

  • 如果两个链表没有交点,返回 null.
  • 在返回结果后,两个链表仍须保持原有的结构。
  • 可假定整个链表结构中没有循环。
  • 程序尽量满足 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 *a=heada;
    struct listnode *b=headb;
    while(a!=b)
    {
        if (null == a)
        {
            a=headb;
        }
        else
        {
            a=a->next;
        }
        if (null == b)
        {
            b=heada;
        }
        else
        {
            b=b->next;
        }
        
    }
    return b;
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网