博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个链表的第一个公共节点
阅读量:6794 次
发布时间:2019-06-26

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

567993-20160316202421084-1151986292.png
第一种思路:
    用栈
第二种思路:
    先遍历两个链表,得到各自长度,然后将长的那个链表先往后查找 两长度差的 步数。接着同时向后查找,直到找到相同的节点。
 
  1. class Solution {
  2. public:
  3. ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {
  4. int size1=0,size2=0;
  5. ListNode* p1=pHead1;
  6. ListNode* p2=pHead2;
  7. while(pHead1!=NULL){
  8. size1++;
  9. pHead1=pHead1->next;
  10. }
  11. while(pHead2!=NULL){
  12. size2++;
  13. pHead2=pHead2->next;
  14. }
  15. pHead1=p1;
  16. pHead2=p2;
  17. if(size1>size2){
  18. int n=size1-size2;
  19. while(n--)
  20. pHead1=pHead1->next;
  21. }
  22. else if(size1<size2){
  23. int m=size2-size1;
  24. while(m--)
  25. pHead2=pHead2->next;
  26. }
  27. while(pHead1!=pHead2 &&pHead1!=NULL && pHead2!=NULL){
  28. pHead1=pHead1->next;
  29. pHead2=pHead2->next;
  30. }
  31. return pHead1;
  32. }
  33. };

转载于:https://www.cnblogs.com/zhxshseu/p/5284980.html

你可能感兴趣的文章
测试 Animations
查看>>
spring 技术内幕阅读笔记 - spring mvc
查看>>
6月份值得一看的 Java 技术干货!
查看>>
条件随机场---条件随机场的定义与形式
查看>>
机器学习基础---学习算法
查看>>
sturts2 标签
查看>>
Linux守护进程(init.d和xinetd)
查看>>
提问的智慧
查看>>
驰骋工作流引擎设计系列06 保存草稿设计
查看>>
软件开发人员的“七重苦”
查看>>
使用java基础反射访问私有域、方法和构造函数
查看>>
Android:解决列表滚动时背景色变黑的方法
查看>>
(转)十月百度,阿里巴巴,迅雷搜狗最新面试七十题
查看>>
freeglut 2.8.1 windows 8 x64 配置
查看>>
apache 配置虚拟主机
查看>>
FTP 的 被动传输模式
查看>>
使用 hydra 破解路由器密码
查看>>
小黑小波比.sql语句查询0:全部;1:类型A;2:类型B
查看>>
@PathVariable 包含斜杠
查看>>
思达报表工具Style Report基础教程—参数化查询
查看>>