为什么职位越高的人越不排斥加班,特别是有些领导是加班控?
最近刷到一帖子,有人问:“为啥职位越高的人越不排斥加班?”
作为一名程序员,我只能说:不是他们不排斥,是他们根本跑不掉。
我前上司,技术总监,白天各种会议,晚上十点开始写代码。你以为他热爱加班?其实他怕项目出问题,老板第一个找他。
职位越高,背的锅越大。你摸鱼是消耗工时,他摸鱼可能就掉年终奖了。
总结一句:我们加班是为了活着,他们加班是为了不死。【备注:文末可领最新资料】
算法题:掉落的方块
局长
我记得第一次刷到这道“掉落的方块”题是在LeetCode,难度是Hard,点进去看了眼题面,我脑袋嗡的一声,心里就俩字儿:离谱。但硬着头皮看了半小时题解后,我竟然明白了——不是题离谱,是我太菜 😅。
题目是这样的:一堆方块往地面掉落,每个方块有个起始横坐标、边长,高度由它下面所有和它有重叠的方块决定。每个方块掉落之后,你要记录此时场上所有方块能堆叠起来的最大高度。
这不是纯粹模拟吗?是,但问题在于你模拟得够快吗?最直觉的暴力写法是每个方块都跟前面所有方块去 check 一下是不是重叠,然后再决定它该掉在哪个高度。你说能不能做?能,时间复杂度 O(n²),数据小一点能混过去,大一点直接 TLE。
但话说回来,我当时看到有人用 TreeMap 写,用线段树写,甚至用 Segment Tree Beats 写,我就想,这题值得这么搞吗?——值得,因为这是那种能真切锻炼你建模能力的题。不是那种靠套路吃饭的题,是你得动脑子去思考“我该怎么表示‘当前地面上的高度情况’”。
说个我一开始的 naive 实现方式,直接维护一个 List<int[]>,每个 int[] 表示一个落地的方块 [start, end, height]。来一个新的方块,就遍历这个 List,看哪些区间有重叠,找出最大高度,然后计算这个新方块落地的高度,再 append 到 List 里。代码大致长这样:
classSolution {
public List<Integer> fallingSquares(int[][] positions) {
List<int[]> intervals = newArrayList<>();
List<Integer> result = newArrayList<>();
intmaxHeight=0;
for (int[] pos : positions) {
intleft= pos[0], size = pos[1], right = left + size;
intheight=0;
for (int[] interval : intervals) {
intstart= interval[0], end = interval[1], h = interval[2];
if (start < right && end > left) {
height = Math.max(height, h);
}
}
intcurrHeight= height + size;
intervals.add(newint[]{left, right, currHeight});
maxHeight = Math.max(maxHeight, currHeight);
result.add(maxHeight);
}
return result;
}
}这玩意简单粗暴,确实能过,但效率不高。后来看了大神的写法,用了离散化 + 线段树 + 懒更新,我就真的跪了 🙇。
它的思路是这样的:先把所有的 x 坐标(起点和终点)收集起来做离散化,原因很简单,x 的范围太大,不能直接用作数组下标。然后用一棵线段树去维护每个区间的最大高度,每次插入一个方块,就是把它的区间的最大高度更新成“旧高度 + size”,并返回全局最大高度。
如果你熟悉 segment tree,那这玩意简直就是纸上谈兵中的经典战役——每次插入,其实就是“查询 + 修改”。
当然还有人用 TreeMap 来维护一个 interval map,甚至有人写了 Sweep Line,我看完只想说:这题是面试官的心头好没错了 🤡。
但说实话,这题也让我意识到一个事儿——你平时积累的数据结构到底有多“落地”,一道题就能看出来。很多人以为线段树就是刷区间题专属,但其实只要你能把现实中的“变化”和“查询”抽象成区间问题,线段树、树状数组甚至平衡树都能派上用场。
这事儿就像是工作中遇到需求变更,你以为只是改个 button,实际牵一发而动全身,要动接口、改数据表、还得拉测试 🙃。你用不用得上“高级武器”,完全看你有没有能力把复杂场景建模成你熟悉的结构。
最后总结一句话:掉落的方块,不只是算法题,它其实就是“打工人每天扛 KPI 的现实缩影”——你上一秒以为地平线还在,下一秒老板一句话整个天花板就塌了。
别问怎么搞,搞就是了 💪。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
-END-
以上,就是今天的分享了,看完文章记得右下角点赞,也欢迎在评论区写下你的留言。