35岁年薪百万的技术专家,被95后领导逼到裸辞。。
今天在网上看到一个让人有点“想笑又想哭”的吐槽:一位35岁,年薪百万的技术专家,竟然被一位95后的空降领导逼到了裸辞的地步。我也是被震惊到了。🙄
事情的经过是这样的:这位技术大牛,代码水平一流,年薪也不低。但有一天,他的领导,一个95后的小伙子,站在他面前说:“你代码水平不如应届生,薪资倒挂合理,不想干可以走。”嗯?
这个不就是“技术大牛”和“新晋领导”之间的那点事吗?
其实,不少人说,年纪大了就得被迫接受“年轻人”的指挥。可是有时候,问题的核心并不是年纪,而是是否能够理解和尊重技术本身。技术可不是只会做ppt的能力,真要看实力,代码才是硬道理。
至于网友的建议“让他裁你”,我也有同感。😂
不过想想如果真那样,估计这位大牛也不会那么容易被搞定,毕竟能到35岁还年薪百万,哪是随随便便的“程序员”?对此你们咋看?【备注:文末可领最新资料】。
算法题:检查「好数组」
今天咱们来聊一个很有意思的算法题——检查「好数组」。
先来给大家定义一下「好数组」是什么。一个数组被称为「好数组」,如果它的每个元素都可以通过某种方式转换为相同的值,前提是数组元素可以通过一个操作来实现这个转换。具体来说,这个操作就是「每次把一个数除以 2,直到它变成 1」,也就是可以通过除以 2 来判断这个数是否最终能变成 1。
听起来是不是有点绕?别担心,咱们一块儿看怎么解决这个问题。
首先,我们得搞清楚“好数组”的含义。假设你给的数组是 [4, 6, 8],你能通过不断地把每个数字除以 2,把它们都转化为 1,那么这个数组就叫做「好数组」。但是如果数组里有些数字不能通过除以 2 来变成相同的数字,那就不符合要求,整个数组就不能称为「好数组」了。
我觉得这里最关键的地方其实是如何判断一个数字最终能否通过除以 2 转换成相同的值。其实就是要判断这个数字除以 2 后剩下的部分,能否在所有数组中一致。
举个例子,数字 8 和 4 都可以通过不断除以 2 得到 1,但数字 6 在除以 2 后剩下 3,而 3 不能再被 2 整除。所以,6 和其他数字就有差异,不能算作「好数组」的一部分。
那么我们要怎么做呢?我想了下,下面这段代码应该能帮助我们快速判断一个数组是不是「好数组」。
def isGoodArray(nums):
def reduce_to_one(n):
while n % 2 == 0:
n //= 2
return n reduced_values = set(reduce_to_one(num) for num in nums)
return len(reduced_values) == 1
# 示例使用
nums = [4, 6, 8]
print(isGoodArray(nums)) # 输出 True,因为都可以除以 2 变成 1
nums = [4, 6, 9]
print(isGoodArray(nums)) # 输出 False,6 和 9 不同
咱们这段代码的思路是,首先定义一个辅助函数 reduce_to_one,它会不断把传入的数字除以 2,直到不能再除为止,最后返回一个无法继续除的结果。然后,使用集合 reduced_values 来存储每个数的最终结果。最后,只要集合中有且只有一个唯一的元素,就说明这些数能够都转化成相同的数字,这样就可以返回 True,表示这个数组是「好数组」。
是不是很简单?不过,这里有个小细节要注意:虽然这个方法对于大部分数据都能处理得很高效,但如果数据特别庞大,集合的空间消耗和循环判断可能会带来性能问题。所以在实际生产环境中,如果数组非常大,还得考虑一下优化的方式,比如提前去重或者用其他数据结构来优化性能。
所以,大家如果以后碰到类似的题目,不妨也像处理「好数组」这样,细心分析每一个环节,做到举一反三。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。