努力追求可能 2022-10-28 20:25 采纳率: 66.7%
浏览 17
已结题

两个单链表相交的起始节点

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

根据快慢法则,走的快的一定会追上走得慢的。
有的链表短,他走完了就去走另一条链表,我们可以理解为走的快的指针。
那么,只要其中一个链表走完了,就去走另一条链表的路。如果有交点,他们最终一定会在同一个
位置相遇

    if headA is None or headB is None: 
        return None
    cur_a, cur_b = headA, headB     # 用两个指针代替a和b


    while cur_a != cur_b:
        cur_a = cur_a.next if cur_a else headB      # 如果a走完了,那么就切换到b走
        cur_b = cur_b.next if cur_b else headA      # 同理,b走完了就切换到a

    return cur_a

疑问:if cur_a else headB 这是什么意思? 我没见过这种 if_else 为什么可以代表 a与b的切换

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-10-28 21:21
    关注

    cur_a = cur_a.next if cur_a else headB 等价于
    if cur_a:
    cur_a = cur_a.next
    else:
    cur_a = headB
    不过话说回来,你这代码是假定两个链表必定相交且不等长,然后去找交点。倘若两个链表不相交,或者等长,则一直是死循环啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)