Python技术迷

大厂哥来我们小破公司,,觉得我们得技术都太low了~

刚看到个贴子说,大厂哥被裁来小公司,觉得技术low、管理也乱。我觉得这事吧,作为一个程序员,其实挺常见的,技术圈子就跟玩升级打怪似的,总有人觉得自己装备高人一等。

Image

网友们的回复我看了看,有的说大厂哥眼界高也正常,毕竟见过大场面。但也有人觉得,天天嫌弃没啥用,关键还得看你能不能带着团队进步。怎么说呢,站在程序员角度,技术栈高低只是表面,适合当前业务才最重要。

大厂确实有一套,但小公司往往灵活,遇到问题能直接拍板,效率说不定还更高点。你嫌环境“low”,那能不能自己动手改造?光吐槽不动手,谁都能做。

总的来说还是那句老话,哪怕环境有限,也可以靠自己提升,不要一味挑剔,多点包容,带点改变的心,大家才能一起成长。【备注:文末可领最新资料】

面试题:最繁忙的机场

我早上赶地铁还差点迟到,结果地铁站人挤人,突然脑子里闪出来“最繁忙的机场”这事,特应景哈,地铁其实就是个大型机场排队现场……

说回正题哈,这个最繁忙的机场算法题,用Python写其实不难,生活中你就当自己是机场调度员,手里有一堆飞机的起飞和降落时间表,让你找哪个机场最忙,也就是同一时刻地上飞机最多。其实这跟刷卡进地铁一样,有人进有人出,你得随时知道站台上最多人是什么时候,是不是?思路很生活化。

这个场景其实是个“区间覆盖”的老梗,你给的每一架飞机都是个区间(比如08:00落地,10:30起飞),我们要搞清楚所有这些区间,哪个时间点叠加人数最多。

最直接的办法其实就是“扫描线”思路。比如说有这些飞机

flights = [
    (1, 5),  # 1点落地,5点起飞
    (2, 6),  # 2点落地,6点起飞
    (4, 7),  # 4点落地,7点起飞
]

你就把所有“落地时间”当+1,“起飞时间”当-1,拼成一串时间点去排序,然后顺序扫一遍,人数加加减减,随时记下最大值就完事。像我以前帮朋友搬家的时候,电梯就是这样,进来几个人,出去几个人,最多的时候就是最堵那会儿。

代码也不复杂,昨天晚上我边打王者边敲的……

defbusiest_airport(flights):
# 有人落地+1,起飞-1,全部加到events里面
    events = []
for arrival, depart in flights:
        events.append((arrival, 1))
        events.append((depart, -1))
# 按时间排序(万一落地和起飞同一时间,先加后减不影响)
    events.sort()
    cur = 0
    max_count = 0
for time, change in events:
        cur += change
        max_count = max(max_count, cur)
return max_count

# 随便举个例子
flights = [(1, 5), (2, 6), (4, 7), (3, 8)]
print(busiest_airport(flights))  # 输出应该是3

其实每次讲这个,脑子里画面感都特别强,你想象机场大屏幕上每个航班一条线,大家都重叠那点儿就是最忙的。对吧,你不用特意去遍历每一秒,看有多少飞机,直接排序扫一遍就行,特别省事。

有的小伙伴会问,那个最忙的机场要输出哪个具体时间?其实你可以顺手加个变量,把达到最大人数的那个时间点也记录下来嘛,代码稍微改下就能做出来。或者你要统计机场实际是哪个,也就是有多个机场数据,做个分组,一样的思路。其实跟早高峰地铁哪一站最挤没啥两样。

反正,这题你生活中肯定遇到过,就是看你能不能想起来用“加一减一排序”的套路,代码真没啥难度,主要就是思路要生活化,别把自己绕进公式里。等会咖啡凉了,我还得去工位上改bug,今天说到这吧,有啥不懂群里@我,别像我昨晚那样被需求拖到十一点才回家,太累了。

-END-

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

🔥虎哥私藏精品🔥

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