被裁了,离职前删光代码注释,违法吗?
在脉脉上刷到一个离谱的帖子:有网友被裁了,心态崩了,离职前把自己写的代码注释全删了。
底下评论炸锅了,有人拍手叫好:“报复社会的典范!”也有人质问:“你这是违法,损害公司利益!”
说实话,我第一反应是——你居然还有时间删注释?我上份工作是直接让人事拿个纸袋来收东西的,转头就被踢出内网,连桌面猫猫壁纸都没来得及换。
不过从感情上讲,很多人能理解那种“明明我加班到吐血,结果说裁就裁”的愤怒。但理智上呢?别冲动,这种行为最多解气一时,但真被追责,那可是给自己找麻烦。
所以啊,离职时最好潇洒一点,别让最后的背影都写满了“幼稚”二字。职场如戏,全靠演技,但别演成了法制节目。【备注:文末可领最新资料】。
算法题:寻找右区间
这题说的“寻找右区间”,刚看到题目我心想——“这名字听着怎么像是让人找个靠谱的对象,左一个不行,右一个又不合适。”结果点进去一看,哎,真的是“找对象”的经典套路:给你一堆区间,找最靠右、但还能接受(起点不小于当前终点)的那个。
题目其实很简单,但有点绕人的是它考察的是如何高效查找,直接暴力扫一遍肯定超时,那怎么来点“聪明劲”呢?
先说下题意:
输入一堆区间,每个区间是 [start, end),你要在这些区间里找到某个区间i的右区间j,这个右区间得满足 intervals[j].start >= intervals[i].end,而且在所有满足条件的区间中,intervals[j].start 要尽量小。找不到就返回 -1。
那咱们思路呢也别走弯路:
先搞清楚我们要快速查找 >= 一个数的最小 start。 这不就是排序 + 二分查找能搞定的事么?
咱先拿个栗子试试:
import bisect
deffindRightInterval(intervals):
# 记录原来的下标,不然找不到原位了
starts = sorted((interval[0], i) for i, interval in enumerate(intervals))
res = []
for interval in intervals:
end = interval[1]
# 二分查找:找到第一个start >= end 的位置
idx = bisect.bisect_left(starts, (end,))
if idx < len(starts):
res.append(starts[idx][1])
else:
res.append(-1)
return res
上面这段代码就是正儿八经的“聪明做法”:先把所有的 start 连同它的下标一块排个序,这样后面查找就方便了。bisect_left 是 Python 的隐藏技能之一,效率高又好用,简直比那种写了20行 if-else 的“面试型代码”高级多了 。
再来看下复杂度:排序是 O(n log n),每次查找是 O(log n),总的就是 O(n log n),面试官听了直接点头:“这个人懂活。”
不过我得提一句,别真的用暴力双层 for 循环去干这事了,那玩意就是典型的“写出来给自己找不痛快”,时间复杂度 O(n^2),数据一多直接卡死你 💀。
比如下面这种写法,就是“别学”系列的:
# ❌ 不推荐,面试凉凉
deffindRightInterval_bad(intervals):
n = len(intervals)
res = []
for i in range(n):
min_idx = -1
min_start = float('inf')
for j in range(n):
if intervals[j][0] >= intervals[i][1] and intervals[j][0] < min_start:
min_start = intervals[j][0]
min_idx = j
res.append(min_idx)
return res
你说它能不能跑?能,但你跑得慢啊,别在那装“能跑就行”,我们写代码不是光为了它“活着”,而是要它“活得好”🙃。
讲真,这种题一看就知道是面试官用来卡住那些“会写但不想动脑”的选手的。你直接怼暴力,他们一个眼神就知道你刷题量没上来;你能秒出二分法,立马能看出你对算法掌握有点货。
我觉得这题更像是一个写代码思维的体检。如果你一上来就是遍历,说明你下意识的“优化思路”不够敏感。但如果你能马上联想到排序 + 二分,就说明你有点那种“提前建好查找表”的意识。就像数据库索引,查一次快慢差别不是一点点。
话说回来,Python 的 bisect 模块真的是香到不行,很多人平时用得少,其实这是算法竞赛的神兵利器,掌握了它,很多题目就能优雅地解决。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。