欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-29 13:25:35
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 ......

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

 

例如,下面的两个链表

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;
}