前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >感动程序员的题解

感动程序员的题解

作者头像
somenzz
发布2021-07-23 10:47:55
2250
发布2021-07-23 10:47:55
举报
文章被收录于专栏:Python七号Python七号

为了保持编程能力,我计划每天刷一道力扣题目,目前已经坚持 6 天。

今天做完一道题后开始看题解,程序员真的有才,有个总结感动了很多程序员,也包括我,忍不住分享给你。

题目是求两个链表第一个公共节点,level 简单,截图如下:

思路确实不难,只要找到同一个起跑线,如图中的 a1 和 b2,然后同时前进,就可以找到第一个相遇的点。

定义两个指针指向 A,B,两个指针同时前进,短的链表比如 A 走到末尾时,再用一个指针 C 指向另一个链表(这里是 B)的头,然后 B,C 同时前进,B 走到末尾时,C 就指向了 b2,然后 b2 和 a1 同时前进就可以找到 c1。

不过评论区有个总结很精彩:

你变成我,走过我走过的路。

我变成你,走过你走过的路。

然后我们便相遇了...

看完这个,我不禁赞叹,刷题还刷出了人生感悟,回想起自己的过往,自己走过的路,别人不也走过么,别人走过的路,自己也正在尝试,有人来的早一些,有人晚一些,为了同一个目标,最终都会不期而遇。

附 Python 优雅的解法:

代码语言:javascript
复制

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
        node1, node2 = headA, headB
        
        while node1 != node2:
            node1 = node1.next if node1 else headB
            node2 = node2.next if node2 else headA

        return node1

关注我,一起学 Python。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档