Python技术迷

建议不要轻易晒工资:阿里加v员工说自己P7,连续拿好绩效总包达到了177w,已经笑得合不拢嘴,太爽了!

刚看到个贴子,说阿里一位加V员工自爆自己P7,连续拿好绩效,总包177w,开心得合不拢嘴。网友们有羡慕的,也有冷嘲的,说这没啥好炫的。

Image

我觉得这事吧,晒工资就像在饭桌上秀肌肉🍖,看着热闹,其实容易引火烧身。一方面,高薪确实靠能力和努力换来的,值得肯定;但另一方面,大多数人收入没到这个水平,容易引发比较甚至焦虑。网友里有人调侃“这工资可以笑三天”,但也有人提醒“有些话说多了,容易被人盯上”。

换个角度想,高收入意味着高压力,背后是超长工时、激烈竞争,外人只看到数字,却没看到付出的代价。所以我比较认同那句:钱赚得多当然好,但别把它变成衡量一切的标尺,更别随便拿来当谈资。

总的来说,工资是个人隐私,也是能量来源。想晒不晒是自由,但别忘了,低调往往比炫耀走得更远。【备注:文末可领最新资料】

面试题:富有客户的数量

小区门口奶茶排队的时候,隔壁穿工牌的小李又来问我:“哥,那个…‘富有客户的数量’怎么写个 Python 解法啊?别太玄乎的那种。”我一手捧着半糖去冰,一手比划了下思路:就把每个客户在不同账户的钱加起来,谁的钱最多就叫“富有”,最后数数有多少人并列第一。就这么个事儿,别想太复杂。

我们用最常见的定义哈:给你一个 accounts 矩阵,accounts[i][j] 表示第 i 个客户在第 j 个账户里的余额。客户的“总资产”就是这行的和。谁的总资产达到全场最大值,就算“富有客户”。要返回这样的客户有多少个。 ——对,就是“并列第一的人数”。不是超过阈值、也不是交易次数,别搞混。

思路就两步,真没弯

说白了就两遍遍历(或者一遍里顺手干两件事):

  1. 扫一遍找最大总资产 max_wealth。
  2. 再扫一遍,谁的总资产等于 max_wealth 就把计数加一。 要省事儿,也能一遍搞定:边算每行和,边维护当前最大值和并列人数。新的更大就重置计数,等于就+1,小了就忽略。时间是 O(n*m),空间 O(1)(不算输入)。
from typing import List

defcount_rich_customers(accounts: List[List[int]]) -> int:
# 边扫边维护最大值和计数
    max_wealth = -1
    cnt = 0
for row in accounts:
        total = sum(row)
if total > max_wealth:
            max_wealth = total
            cnt = 1
elif total == max_wealth:
            cnt += 1
# 小于最大值就不管它
return cnt

# 小测一下
if __name__ == "__main__":
    print(count_rich_customers([[1,2,3],[3,2,1],[2,2,2]]))  # 1,第一行总和6最大
    print(count_rich_customers([[5,1],[2,4],[3,3]]))        # 2,第一行6、第三行6,并列
    print(count_rich_customers([[0],[0],[0]]))              # 3,都是0,也算并列第一
    print(count_rich_customers([[10, -2],[5,5],[8,1]]))     # 1,第一行8并不最大,第二行10最大

为啥这么写

  • 一遍搞定是最省心的:对每个客户就做一次 sum(row),顺便更新最大值和计数,省掉存一堆中间和的空间。
  • 负数也能扛:谁说余额不能是负的对吧?初始 max_wealth 设成 -1 不太稳,稳妥点可以用 float("-inf"),不过日常余额非负就无所谓。我这段里通过逻辑保证了第一次行和一定能写进去。
  • 边界也考虑了:空输入要不要处理?通常平台不会给空矩阵;真给了,你可以加个判断直接返回 0。

常见坑我先替你踩了

  • “富有”的定义不一致:有人按“> 某阈值”,有人按“= 最大值”。咱这版是“= 最大值”。如果你们产品临时改口,要按阈值 T 算,那就把 == max_wealth 改成 >= T,上面那一套最大值的逻辑就不要了,直接计数就行。
  • 大数据量担心慢?sum(row) 是 C 层实现,已经很快了;只要不是几亿行那种离谱规模,O(n*m) 够用。
  • 想要顺便把“最大值是多少”也返回?函数返回 (max_wealth, cnt) 就好了,改两行。

行了我奶茶也快化了…你把这段粘进去跑下样例,能过。要是你们题库版本不一样、定义改成“交易金额超过500的客户数量”那一挂,喊我一声我把判定条件改成按阈值的就行。

-END-

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

🔥虎哥私藏精品🔥

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