Python技术迷

麻了,发现年薪60万的同事,不会用GitHub。。

看到这个帖子我笑出声了:“麻了,发现年薪60万的同事,不会用GitHub,怎么破?”

Image

说实话,我一点也不麻,甚至觉得这事儿很正常。

毕竟会不会用 GitHub,跟你能不能拿 60 万,真的没啥必然关系。有些人就是嘴巴特别会讲、汇报特别会写、PPT 一做就能拿下全场掌声👏,老板最喜欢这种“业务熟、会包装”的人。

而且你说不定还碰上的是个“资源型”员工,人脉广、信息灵,甚至搞定客户一句话的事,公司不惯着他惯谁?

所以吧,别太较真。GitHub 用得再花,业绩做不出来,领导也只会说你“技术宅,没大局观”。

是你你会怎么做呢?【备注:文末可领最新资料】。

算法题:扁平化多级双向链表

咱先说说这道题的背景。你以为是普通的双向链表?不,主链表中的某些节点还有child指针,指向另一条双向链表,妥妥的多级结构,像极了文件夹里套文件夹。题目要求是把这玩意“扁平化”——也就是说,child链表要插入到主链表中,按顺序一个不落。

这个场景让我想起某次项目里,业务需求说:“这个配置项我们支持一下多级结构吧,比如某个城市可以包含多个区域,每个区域又可以有子区域……”结果产品笑嘻嘻地加了个“支持无限嵌套”,我直接脑袋嗡嗡的 🙃。你以为链表不能卷?错,链表也开始搞“递归式内卷”了。

咱回到题目。用递归方式实现,思路其实不算复杂:

  1. 遍历主链表;
  2. 遇到某个节点有child,就递归处理这个child链表;
  3. 把child链表插进来,然后接上原链表的next;
  4. 别忘了改指针:child链表的尾巴得指回原来的next。

直接看代码更直观点👇:

classNode:
def__init__(self, val, prev=None, next=None, child=None):
        self.val = val
        self.prev = prev
        self.next = next
        self.child = child

defflatten(head):
ifnot head:
return head

defdfs(node):
        curr = node
        last = None

while curr:
            next_node = curr.next
if curr.child:
# 递归处理child链表
                child_head = curr.child
                child_tail = dfs(child_head)

# 插入child链表
                curr.next = child_head
                child_head.prev = curr

if next_node:
                    child_tail.next = next_node
                    next_node.prev = child_tail

                curr.child = None
                last = child_tail
else:
                last = curr

            curr = next_node
return last

    dfs(head)
return head

这个版本的好处是“递归”得很优雅,结构清晰。不过要是你跟我一样,有段时间对递归天然恐惧(特别是怕爆栈),也可以换个方式用显式栈来模拟递归。

栈方式实现也很经典,逻辑差不多,唯一要注意的点是:处理完一个child链表后,原来的next得先保存并压栈,child链表插进去后,从栈里再弹出next接上。这就像那种:你打开一个抽屉,又打开里面的小抽屉,再一个个塞回去,一层不能少

讲真,这种题虽然看着眼熟,但真让你从头撸,细节巨多。指针的前后关系一旦没理清,运行结果立马就翻车,轻则链断,重则死循环。

最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek

也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。

对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB,全部免费领取