程序员老鬼

某鹅厂员工在同事圈绝望发文称:被930了,还有房贷,好绝望!

刚看到个贴子,说鹅厂有员工在同事圈发文,吐槽自己“被930”了,合同到期不续签,月底就要失业,还背着房贷,整个人都快崩溃了 。

Image

网友们的评论挺两极,有的说大厂裁员很正常,早该有心理准备;也有人很同情,觉得房贷和生活压力太现实了。

我觉得这事吧,说到底还是职场的不确定性。所谓的“铁饭碗”越来越少,大厂光环也未必能保证稳定。房贷就像一个沉重的锚,一旦收入断了,整个人都会陷进焦虑里。换个角度看,打工人其实都在赌未来,所以更要留后手,比如积累存款、发展副业、提升技能。

不过话说回来,被930固然难受,但这也可能是个机会。与其沉在绝望里,不如趁机调整方向,毕竟大环境下,能持续增强自己价值,才有更强的安全感 【备注:文末可领最新资料】

算法题:总旅行距离

哥昨晚十一点半在公司楼下啃了个面包,脑子里还在转这个“总旅行距离”的小题,嗯…就是车子有主油箱 mainTank,还有个附加油箱 additionalTank,每消耗主油箱 5 升,就能从附加油箱挪 1 升过来(有就挪,没就算了),每升能跑 10 公里。问:最后能跑多远。听着不难对吧,但细节老容易绕。

你们知道吧,最直接的想法是边开边扣油:主油箱每次扣 5 升,里程 +50km,然后看附加桶还有没有,能不能“奖励”1 升补回主油箱。这样循环到主油箱不够 5 升为止,最后把主油箱剩的零头也跑掉(剩 x 升就再跑 x*10 公里)。写起来很顺手。

有人问我能不能别循环…也行。想象主油箱一共会触发几次“满 5 返 1”的奖励?最多 mainTank / 5 次,但受限于附加油箱存量,所以奖励次数 bonus = min(mainTank / 5, additionalTank)。每拿到一次奖励,就等于白白多了 1 升可跑 10km。注意这 1 升加回去也可能凑出新的 5 升再触发?不会的,因为规则是“每用掉 5 升立即看一次是否能转 1 升”,这个 1 升只是补回去,并不会让“已用掉的 5 升”回魂,计数已经清零到下一轮,所以奖励次数最多就是那两个数的最小值。最后里程就是 (mainTank + bonus) * 10。

classSolution{
// 推导版:O(1)
publicintdistanceTraveled(int mainTank, int additionalTank){
int bonus = Math.min(mainTank / 5, additionalTank);
return (mainTank + bonus) * 10;
    }

// 模拟版:O(mainTank)
publicintdistanceTraveledSim(int mainTank, int additionalTank){
int km = 0;
while (mainTank >= 5) {
            mainTank -= 5;
            km += 50;
if (additionalTank > 0) { // 奖励 1 升
                additionalTank--;
                mainTank++; // 立即补回主油箱
            }
        }
        km += mainTank * 10; // 把零头跑完
return km;
    }
}

昨天小李还纠结“奖励会不会链式触发”,我上面说了哈,不会滚雪球;另一个坑是别忘了最后那点零头油。还有 mainTank<5 的极端情况,公式 (mainTank + bonus) * 10 里 bonus 就是 0,很稳。

  • mainTank=5, add=10 → bonus=min(1,10)=1 → (5+1)*10=60km
  • mainTank=9, add=2 → bonus=min(1,2)=1 → 100km
  • mainTank=1, add=100 → bonus=0 → 10km

好了我先去泡杯咖啡…等会儿谁要把这个封到工具类里我顺手再贴个单测。

-END-

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

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