博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intersection of Two Linked Lists - LeetCode
阅读量:5257 次
发布时间:2019-06-14

本文共 1314 字,大约阅读时间需要 4 分钟。

Write a program to find the node at which the intersection of two singly linked lists begins.

 

For example, the following two linked lists:

A:          a1 → a2                   ↘                     c1 → c2 → c3                   ↗            B:     b1 → b2 → b3

begin to intersect at node c1.

 

Notes:

    • If the two linked lists have no intersection at all, return null.
    • The linked lists must retain their original structure after the function returns.
    • You may assume there are no cycles anywhere in the entire linked structure.
    • Your code should preferably run in O(n) time and use only O(1) memory.

思路:假设A与B长度相等,则从链表头开始一一对比即可。

假设A与B长度不等,则进行一一对比时,短的链表会先被遍历完。这时,让该指针指向另一个链表的表头,继续进行。当长链表也被遍历完时,则其指针指向短的链表。通过这种方式,一定可以找到回合点,因为两个指针遍历的总长度是相等的,都是长链表和短链表各走了一遍。

 

1 class Solution { 2 public: 3     ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { 4         ListNode *ha = headA; 5         ListNode *hb = headB; 6         if (ha == NULL || hb == NULL) return NULL; 7         while (ha != NULL && hb != NULL && ha != hb) 8         { 9             ha = ha->next;10             hb = hb->next;11             if (ha == hb) return ha;12             if (ha == NULL) ha = headB;13             if (hb == NULL) hb = headA;14         }15         return ha;16     }17 };

 

转载于:https://www.cnblogs.com/fenshen371/p/4904478.html

你可能感兴趣的文章
C++常见编译错误
查看>>
如何让你不成为仅仅是代码工人?
查看>>
JAVA遇见HTML——JSP篇(1、JAVA WEB简介)
查看>>
mysql事务
查看>>
mysql 优化
查看>>
Generate transparent shape on image
查看>>
长沙方言书面教材
查看>>
Jenkins + maven 设置
查看>>
mac屏幕录制
查看>>
批量---修改保存 (通用方法)
查看>>
Java 享元设计
查看>>
20145118 《Java程序设计》 第3周学习总结
查看>>
函数内部的两个特殊的对象:arguments和this
查看>>
MySQL 5.7安装与配置
查看>>
第四阶段 02_Linux简介
查看>>
window size in Windows User Experience Interaction Guidelines
查看>>
Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 8
查看>>
Logstic回归采用sigmoid函数的原因
查看>>
ssl选购
查看>>
maven安装与常用命令
查看>>