Python技术迷

腾讯一员工在同事圈吐槽称,自己惹到了公司嫡系了,要混不下去了。

刚看到个贴子,说腾讯有个员工惹到公司嫡系,私下道歉也不搭理,现在纠结是直接走人还是等拿完期权再说。

Image

网友有人劝早点认错,但现实是嫡系要是不想理你,你再低头也换不来机会。职场里讲的是利益和价值,不是单靠态度就能翻盘。既然僵住了,就要冷静算账:是立刻抽身止损,还是咬牙再撑几个月把期权收入落袋为安。

网友们的回复我看了,有人说“不如换环境”,也有人觉得“熬到钱到手再走”。在我看来,这就是典型的“钱、面子、前途”三角关系。想要面子可能赔了钱,想要钱可能憋着受气。换个角度想,职场本来就是博弈场,有时就是比谁算得更清楚。

总的来说,走不走都是个人选择,但关键是别被情绪绑架。能忍就忍到收益最大化,不能忍就及时止损。【备注:文末可领最新资料】

面试题:最繁忙的机场

下面这题,别想太复杂哈,我就拿“最繁忙的机场”举个接地气的例子:一天到晚谁家门口进出最多,谁就最忙,对吧。把每一趟航班看成一条“从A到B的记录”,A记一次出港,B记一次到港,总数最高的机场,就是答案。

有一堆航班记录 flights,可能是 [("PEK","SHA"),("SHA","CAN"),...];有时还会带人数 [("PEK","SHA",180),...]。问:哪个机场最忙?忙的定义一般有两个: 1)航班量:到港+出港的次数; 2)客流量:到港+出港的人数。 不指定的话,默认按航班量来。

遍历一遍数据,用哈希表给每个机场加分:出港+1,到港+1;如果有乘客数,就+乘客数。并列时,可以按字母序(或机场代码)最小者胜出,避免不确定。

from collections import defaultdict
from typing import List, Tuple, Union

# 1) 按航班量
defbusiest_airport_by_flights(flights: List[Tuple[str, str]]) -> str:
    cnt = defaultdict(int)
for a, b in flights:
        cnt[a] += 1# 出港
        cnt[b] += 1# 到港
# 并列时按机场代码字典序最小
return max(cnt.items(), key=lambda x: (x[1], -ord(max(x[0])) if x[0] else0, -len(x[0])))[0]

# 更简单直观的并列处理:先找最大,再最小代码
defbusiest_airport_by_flights_simple(flights: List[Tuple[str, str]]) -> str:
    cnt = defaultdict(int)
for a, b in flights:
        cnt[a] += 1
        cnt[b] += 1
    maxv = max(cnt.values())
return min([k for k, v in cnt.items() if v == maxv])

# 2) 按客流量(航班元组带人数)
defbusiest_airport_by_passengers(flights: List[Tuple[str, str, int]]) -> str:
    flow = defaultdict(int)
for a, b, p in flights:
        flow[a] += p   # 出港人数
        flow[b] += p   # 到港人数
    maxv = max(flow.values())
return min([k for k, v in flow.items() if v == maxv])

# 小例子
if __name__ == "__main__":
    flights1 = [("PEK","SHA"),("SHA","CAN"),("PEK","CAN"),("CAN","PEK"),("SHA","PEK")]
    print(busiest_airport_by_flights_simple(flights1))  # 预期:PEK 或 SHA,看计数并列时字母序 -> PEK

    flights2 = [("PEK","SHA",180),("SHA","CAN",120),("PEK","CAN",220),("CAN","PEK",200)]
    print(busiest_airport_by_passengers(flights2))      # 看总客流

时间复杂度 O(n),空间 O(m),n是航班数,m是机场数。 边界点: 1)空输入直接返回空字符串或抛错,看题意; 2)并列要有稳定规则(我这里选字典序最小); 3)数据里机场代码大小写要统一(建议全大写再算)。

如果题目加了“某个时间窗最忙”,就把每条记录打上时间戳,用滑动窗口或线性扫描做增减计数;如果跨天,就按天分桶再套同样的计数逻辑。这个就按业务再加几行代码就行,主线思想不变:统一到“加一加一”的模型里。好了我去泡杯咖啡,回头要是你那边有特别格式的输入,我们再改下解析就行。

-END-

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

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领