首页 > 其他 > 详细

两个链表的第一个公共结点

时间:2020-04-26 17:40:33      阅读:68      评论:0      收藏:0      [点我收藏+]

题目描述

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
代码
思路
链表的特点,如果两个链表有一个公共点,则后面的都会重叠。如果两个链表长度不一,先让长的先走几步,两个链表再一起走
编程注意点
while pHead1 != pHead2 and pHead1 and pHead2:
把此条语句写成了如下,一直调试不通,错误使用了not
while pHead1 != pHead2 and not pHead1 and not pHead2:
 1 # -*- coding:utf-8 -*-
 2 # class ListNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.next = None
 6 class Solution:
 7     def FindFirstCommonNode(self, pHead1, pHead2):
 8         # write code here
 9         if not pHead1 or not pHead2:
10             return None
11         # 分别计算两个链表的长度
12         n1 = 0
13         n2 = 0
14         p1 = pHead1
15         p2 = pHead2
16         while p1:
17             n1 += 1
18             p1 = p1.next
19         while p2:
20             n2 += 1
21             p2 = p2.next
22         #p1 = pHead1
23         #p2 = pHead2
24         if n1>n2: #第一个链表长,让第一个链表先走n步
25             n = n1 -n2
26             while n!= 0:
27                     n = n-1
28                     pHead1 = pHead1.next
29         else:
30             n = n2 -n1
31             while n!= 0:
32                     n = n-1
33                     pHead2 = pHead2.next
34         while pHead1 != pHead2 and pHead1 and pHead2:
35                 pHead1 = pHead1.next
36                 pHead2 = pHead2.next
37         if pHead1 == pHead2:
38             return pHead1
39         else:
40             return None
41     

 

两个链表的第一个公共结点

原文:https://www.cnblogs.com/shuangcao/p/12780626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!