拼多多员工爆料:有个哥们中了696万的彩票, 中奖当天就提了离职,已经有人开始去他“曾经”的工位打卡了
刚看到个贴子,说拼多多有个哥们,中了一等奖,696万,当天就提离职了。现在他“曾经”的工位,已经成了大家打卡圣地,活生生被供起来了。
我觉得这事吧,别上纲上线。人家运气好,想走想躺,这是人家的选择,没必要绑架什么“职业精神”。但另一头也别做梦,指望一张彩票把人生全改了。对普通人来说,中了大奖叫意外之喜,不中奖才是日常。
工位打卡,图一乐可以,真想改变生活,还是得靠自己慢慢攒:技能、经验、存款、眼界。这些东西,不会像彩票号码那样随机消失。总的来说吧,希望我们有一天,就算没中696万,也都有说走就走的底气。
算法题:旋转数字
昨天晚上十一点多,我在公司楼下便利店门口啃关东煮,我们组那个小李突然一句:“哥,LeetCode 那个旋转数字到底咋写啊,我翻来覆去总是错几个用例。”我当时脑袋都是汤味儿,愣是给他讲清楚了,顺手把 Python 写完了,干脆给你们也说一嘴。
先把题意思糊弄清楚啊,不然容易写飞。所谓“旋转数字”,就是把一个数字每一位都顺时针转 180 度,看转完还是不是一个合法数字,而且要转完跟原来不一样才算“好数字”。 能用的数字只有:0、1、2、5、6、8、9 其中:0、1、8 转了还是自己;2 和 5 能互相变;6 和 9 能互相变;3、4、7 一转就废了,直接判死刑。
举个例子:
1 → 1(合法,但是没变样,不算好) 2 → 5(合法,也变样了,是好数字) 11 → 11(还是没变样,不算) 69 → 96(两个都合法,还变样了,是好数字)
题目一般会给一个 n,让你数一数 1 到 n 里有多少这样的“好数字”。
我那会儿跟小李说,别一上来就想什么高深算发,先写一个“老实人版本”:从 1 循环到 n,一个一个检查。检查的时候就干三件事:
每一位必须属于 {0,1,2,5,6,8,9} 里面,否则直接 return False。 同时把“旋转后的数字”算出来。 最后看旋转后的数字是不是和原来的不一样。
用 Python 写个小函数就行,我当时随手敲的大概这样:
defis_good(num: int) -> bool:
# 旋转映射表
rotate_map = {
'0': '0',
'1': '1',
'2': '5',
'5': '2',
'6': '9',
'9': '6',
'8': '8',
}
s = str(num)
rotated_chars = []
for ch in s:
if ch notin rotate_map:
returnFalse# 出现 3/4/7 之类的,直接废
rotated_chars.append(rotate_map[ch])
rotated = int(''.join(rotated_chars))
return rotated != num # 要确保“变了样”
小李当时还把最后那个 != 写成了 ==,调试半天说“怎么一个好数字都没有”🙂
有了这个判断函数,其实主函数就特别简单了,就是傻傻地 for 一遍:
defrotatedDigits(n: int) -> int:
ans = 0
for x in range(1, n + 1):
if is_good(x):
ans += 1
return ans
面试官要问复杂度,你就老实说:从 1 到 n 都要看一遍,每个数最多就几位数字,时间复杂度大概 O(n * log₁₀n),在题目给的 n 范围(通常 n <= 10^4)里稳得一批,根本压不垮机器。
小李问那能不能再快点,我说也不是不行,你要是闲的,可以搞个“按位 DP”:
每一位只关心三种状态:这位是不是“会变的”(2/5/6/9)、是不是“非法的”(3/4/7)、是不是“完全不变但合法的”(0/1/8); 然后从最高位往低位做状态转移,顺便卡一下不超过 n。
但说真心话,这题在大部分面试里,人家看到你写出上面那个版本、思路说清楚,再顺嘴提一句“其实还能做数字 DP 优化”,就已经很加分了,没必要现场把 DP 推完,容易自己把自己绕晕。
最后我简单让小李在本地跑了两个用例,他整个人就放松下来了:
print(rotatedDigits(10)) # 2,5,6,9 → 4
print(rotatedDigits(20)) # 会多几个,比如 12,15,16,19 之类的
输出对上,他立马收电脑说请我喝奶茶,我说行你先把剩下几道题刷完再请,不然明天又来问我“哥那个啥,我又写不出来了”。
差不多就这样,旋转数字这题你照着敲一遍,改改变量名,让它长在你手上,以后再遇到类似“数字变形判断”的题,思路其实都是一套。行了我去泡个咖啡,你自己先把这个实现跑一跑看看。
-END-
我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB