zoukankan      html  css  js  c++  java
  • Leetcode#160 Intersection of Two Linked Lists

    原题地址

    先将A链末尾和B链头部接起来

    然后判断是否有环,如果无环,说明肯定不想交,如果有环,那么相交的位置就是环开始的位置

    第一遍做的时候没遇到什么问题,第二遍做的时候各种出错,后来发现原来在用快慢指针法的时候快慢指针要从起点开始,否则计算出来的第一个相交位置不是环开始的位置。。

    代码:

     1 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
     2         if (!headA || !headB)
     3             return NULL;
     4             
     5         ListNode *h = headA;
     6         while (h->next)
     7             h = h->next;
     8         h->next = headB;
     9         
    10         ListNode *fast = headA;
    11         ListNode *slow = headA;
    12         bool running = false;
    13         ListNode *res = NULL;
    14         
    15         while ((!running || fast != slow) && fast && fast->next) {
    16             running = true;
    17             fast = fast->next->next;
    18             slow = slow->next;
    19         }
    20         if (fast == slow) {
    21             res = headA;
    22             while (res != slow) {
    23                 res = res->next;
    24                 slow = slow->next;
    25             }
    26         }
    27         h->next = NULL;
    28         
    29         return res;
    30 }
  • 相关阅读:
    Bzoj3339 Rmq Problem
    Bzoj3509 [CodeChef] COUNTARI
    浅析python日志重复输出问题
    mysql练习题
    python学习之思维导图
    python面向对象编程练习
    Python常见下划线
    内置方法
    类的绑定方法与非绑定方法
    封装
  • 原文地址:https://www.cnblogs.com/boring09/p/4268435.html
Copyright © 2011-2022 走看看