同事月薪 1.3w,自从被降薪后天天摸鱼,今天被叫去开会,以为要被裁,结果老板说:公司缺个技术总监,你去试试?月薪给你翻三倍
刚看到个贴子,说一位同事被降薪后整天摸鱼,结果老板反而让他当上了技术总监,工资直接翻三倍。网友都炸了,有人说他是“摸鱼界的天花板”,也有人嘲讽“说明公司不行”。
我觉得这事吧,其实挺现实的。职场上,领导看重的从来不是谁最辛苦,而是谁最“有用”。有的人忙得像陀螺,但方向错了;有的人表面摸鱼,其实在旁观全局、沉淀经验。老板真正需要的是能扛事、懂体系、能解决关键问题的人。
网友说“努力没用”,我不完全认同。努力当然重要,但得用在刀刃上。被降薪时不崩溃,反而能静下心看清公司漏洞,这种心理素质和格局,才是真正稀缺的能力。
说到底,职场升迁是实力、心态和时机的叠加。别急着羡慕别人被翻三倍的工资,先想想自己能不能撑得住那份位置。【备注:文末可领最新资料】
面试题:目标和
昨晚十一点多在公司楼下吹风的时候,小李问我:哥,那个“给一堆正整数,加正负号凑目标值”的题到底咋写,回溯老TLE。嗯,就是经典的 Target Sum。
给数组 nums(非负整数)和目标 S,在每个数前放 + 或 -,问有几种方式能得到 S。比如 [1,1,1,1,1]、S=3,答案是 5。
直觉思路(暴力 + 记忆化)
最直接就是 DFS:每个元素两种选择,加或者减,树高 n,分支数 2。纯暴力是 O(2^n),但用“索引 + 当前和”做记忆化,能把很多重复子问题剪掉,速度就上来了。实际面试不怕先写这个,跑通样例吃个底气。
等价转化(背包才是王道)
更优雅的是转成“子集和”:把加号那堆称为 P,减号那堆称为 N,有sum(P) - sum(N) = S,又因为 sum(P) + sum(N) = total(所有数之和),两式相加得sum(P) = (S + total) / 2。 所以问题变成:从 nums 里选一些数,装到容量为 target = (S+total)/2 的“背包”里,有多少种装法(顺序不重要)。两个坑别踩:
如果 S+total是奇数,答案必然 0。S太大(绝对值大于total)也直接 0。 然后用一维 DP:dp[j]表示“凑出和 j 的方案数”。初始化dp[0]=1,遍历每个数x,内层j从大到小更新:dp[j]+=dp[j-x]。倒序是为了每个数只用一次。
from functools import lru_cache
from typing import List
# 写法一:记忆化搜索
deffind_target_sum_ways_dfs(nums: List[int], S: int) -> int:
n = len(nums)
@lru_cache(None)
defdfs(i: int, cur: int) -> int:
if i == n:
return1if cur == S else0
return dfs(i + 1, cur + nums[i]) + dfs(i + 1, cur - nums[i])
return dfs(0, 0)
# 写法二:子集和动态规划(推荐)
deffind_target_sum_ways_dp(nums: List[int], S: int) -> int:
total = sum(nums)
# 不可达的两种情况
if abs(S) > total:
return0
if (S + total) % 2 == 1:
return0
target = (S + total) // 2
dp = [0] * (target + 1)
dp[0] = 1# 空集凑出0的方法只有1种
for x in nums:
# 0 也要参与:它能让方案数翻倍(对每个可达j,+0和-0都不变)
for j in range(target, x - 1, -1):
dp[j] += dp[j - x]
return dp[target]
复杂度 & 小细节
DP 的时间 O(n * target),空间 O(target);记忆化通常也够快。数组里有 0 的时候,不用单独写分支,DP 自然会“方案数翻倍”,因为 x=0 时 dp[j]+=dp[j]。还有一个小习惯:面试里我会先判 abs(S)>total 和奇偶性,这两条能一秒钟把很多无效输入挡在外面,省时省力。
什么时候选哪种?
样例很小、想快写就用 DFS+记忆化;S 不是很大、想吃稳定收益就用背包 DP。实话讲,大厂白板上我更常用第二种,因为边界清晰,不容易掉坑。行了我先去泡杯咖啡,等会儿要把这题讲给小王再过一遍。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领