程序员老鬼

字节员工吐槽:被组内37岁老嫡针对,大概率年底要被搞走。有没有反击的办法?

刚看到个贴子,说字节有位员工被组内37岁的“老嫡系”针对,感觉年底就要被搞走,问有没有反击办法。

Image

网友们的回复挺两极的,有人让他硬刚,有人劝他早点跑路。

我觉得别急着“反击”,职场不是擂台。真要对付老油子,最聪明的方式是“以静制动”。对方要搞你,多半是怕你抢风头;那你就先别硬碰,稳住口碑和成果,让上级看到谁是真干活的。

职场不是打赢谁,而是留下来。换个角度想,被针对说明你有威胁感,这本身就是一种认可。

别怕斗,但要有脑子地斗。能留在局里的,才有翻盘的机会。【备注:文末可领最新资料】

算法题:跳跃游戏

小伙伴们我先说下场景啊,昨天晚上十一点多,我在公司楼下啃冷掉的肉夹馍,手机那边小李问“哥,跳跃游戏到底怎么写才稳?”我嘴里还塞着生菜…行,我就用最接地气的说法跟你们捋一遍。

给你一个非负整数数组 nums,下标从 0 开始,nums[i] 表示从下标 i 最远能跳多远。问能不能从 0 跳到最后一个位置。能就 true,不能就 false。就这么点事儿,对吧。

别想那么学术。nums[i] 就像你手机电量条,从 i 起跳最多能跑多远。关键不在“我这一步跳多远”,而在“目前为止,我的最远可达边界在哪”。只要走到的每个位置都在“可达边界”里,旅程就能继续。

贪心思路

一路扫过去,维护一个变量 rightMost 表示目前能覆盖到的最右下标。遍历到 i 时:

  • 如果 i > rightMost,说明都踩空了,还没走到就断电,直接 false。
  • 否则更新 rightMost = max(rightMost, i + nums[i])。
  • 提前剪枝:一旦 rightMost >= n - 1,收工,true。

这思路像啥呢?像打游戏开雾,你走到哪,能见度就延长到哪。遇到一格雾外的格子,走不到,游戏就结束。

容易翻车的点

  • 全是 0 怎么办?只要第一个就是 0 且长度>1,那没得玩,false。
  • 中间出现连续好多 0?只要在这些 0 之前 rightMost 能越过它们,就没事;越不过就卡死。
  • 数组很大?贪心是 O(n) 一趟过,稳。

和 DP 对比一句话

DP 能做,但空间和思维都更重;这题贪心就是最简答案。面试官一般也期望你说出“维护最远覆盖”的关键词。

时间与空间

时间 O(n),空间 O(1)。就一个变量在那儿滚。

publicclassJumpGame{
// 贪心解:维护最远可达下标
publicbooleancanJump(int[] nums){
int rightMost = 0;
for (int i = 0; i < nums.length; i++) {
if (i > rightMost) returnfalse; // 走不到这里,直接GG
            rightMost = Math.max(rightMost, i + nums[i]);
if (rightMost >= nums.length - 1) returntrue; // 早点收工
        }
returntrue; // 能把数组走完,也说明OK
    }

// 可选:给想自测的人一个main
publicstaticvoidmain(String[] args){
        JumpGame s = new JumpGame();
        System.out.println(s.canJump(newint[]{2,3,1,1,4})); // true
        System.out.println(s.canJump(newint[]{3,2,1,0,4})); // false
        System.out.println(s.canJump(newint[]{0}));         // true,已经在终点
        System.out.println(s.canJump(newint[]{0,2}));       // false
    }
}
  • 面试时先报贪心思路,再口述两个“翻车例子”解释为何要判 i > rightMost,就显得你踩过坑。
  • 如果被追问“最远能到哪一格”,直接把 rightMost 返回出去也行,改一行就完事儿。

好啦…我去热一下刚才那半个肉夹馍,等会儿有人要是问“最少跳几步”的版本,再来聊另一个贪心。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

最后给大家分享一份不错的副业资料,点击下方公众号,回复关键字: 副业 领取,也可以链接我领取,微信:hls404