三金的代码库 2020-08-08 16:49 采纳率: 0%
浏览 112
已采纳

双指针的原理是啥--为什么一起走相遇了就是第一个节点

找两个链表的第一个公共节点

图片说明
这是我在leetcode上刷到的题,为什么相遇了就一定是第一个节点呢,有点想不通

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
    int i,j=0,min,count=0,count1=0;
    struct ListNode *p;
    struct ListNode *q;
    p=headA;
    q=headB;
    if(p==NULL||q==NULL)
        return NULL;
    while(p!=q)
    {
        p=p?p->next:headB;
         q=q?q->next:headA;
    }
    return p;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-08 17:20
    关注

    不是第一个节点,而是第一个公共节点。因为从开头开始比较,遇到相同,显然就是第一个相同的节点

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月30日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备