半夜12点,leader打了3个电话,我没接,结果第二天被告知这个月绩效为0。。。
昨天有个网友吐槽说,半夜12点Leader打了三个电话,因为没接,结果第二天绩效直接被清0。
这种事情一听就让人心疼。晚上11点和凌晨1点,不接电话有时候真的是因为“身体和心灵”都在抗议,而不是不想担责任。
不过,我觉得在这种情况下,如果我们想要追求更高的职业发展,确实有时候得咬牙硬撑一下。
毕竟,领导看重的往往不仅是你完成了工作,更多的是你对问题的紧急处理态度和责任感。
这也有点像我们做程序,debug的时候,什么都不管,问题积累到一定程度,可能就是“崩溃”了。
不过,有时候,也得为自己的健康争取个小小的喘息空间,我们也需要合理的边界和空间。【备注:文末可领最新资料】。
算法题:灌溉花园的最少水龙头数目
今天我们来聊一个经典的算法题,叫做“灌溉花园的最少水龙头数目”。这类题目其实挺常见的,很多时候它能考察我们的贪心算法能力,尤其是在涉及区间覆盖和优化的问题时,能让我们练习如何在最短时间内找到最优解。
题目大意是这样的:假设你有一个花园,这个花园的长度是n,你有n个位置,每个位置可以放一个水龙头。每个水龙头的作用是可以浇灌一个区间,区间是由水龙头所在位置的左右范围来决定的。目标是找到最少的水龙头数量,使得整个花园都能被浇灌到。
举个例子,假设花园的长度是5,我们可以设置一些水龙头,每个水龙头的覆盖区间如下:
水龙头 1:[1, 2] 水龙头 2:[2, 4] 水龙头 3:[0, 5] 水龙头 4:[3, 5]
这里的问题是,我们怎么才能用最少的水龙头将整个区间从0浇灌到n呢?
思路剖析:
首先,回想一下贪心算法的核心思想:每一步选择当前最优的解,然后期望最终得到的解是最优的。在这个问题中,最优解就是选择最少的水龙头来覆盖整个区间。
我们可以把这个问题转换为区间选择问题,具体做法是:
先按水龙头的起始位置排序:因为我们需要从0开始覆盖,所以按起始位置排序可以帮助我们找到最早能够开始浇灌的水龙头。 从左到右逐个遍历,尽量覆盖更多的区间:我们在遍历时会跟踪当前已覆盖的区间,尽量选择能够把区间延伸得更远的水龙头。 选择每次能最大化扩展的水龙头,直到整个区间都被覆盖。
代码实现:
def minTaps(n, ranges):
# 先创建一个用于记录每个位置最大覆盖范围的数组
max_range = [0] * (n + 1) # 根据水龙头的范围更新max_range数组
for i in range(len(ranges)):
start = max(0, i - ranges[i]) # 起始点
end = min(n, i + ranges[i]) # 终止点
max_range[start] = max(max_range[start], end)
# 贪心选择水龙头,计算最少水龙头数目
taps = 0 # 水龙头计数
curr_end = 0 # 当前已覆盖的最远位置
farthest = 0 # 当前区间能覆盖的最远位置
for i in range(n + 1):
if i > farthest: # 如果i超过了当前最远覆盖点,说明无法继续扩展
return -1
farthest = max(farthest, max_range[i]) # 记录当前水龙头能扩展的最远位置
if i == curr_end: # 如果当前区间结束,需要选择下一个水龙头
taps += 1
curr_end = farthest # 更新已覆盖区间
if curr_end == n: # 如果覆盖到花园的末尾
break
return taps
# 测试
print(minTaps(5, [3,4,1,1,0,0])) # 输出:1
print(minTaps(3, [0,0,0,0])) # 输出:0
代码解释:
我们首先创建一个 max_range数组,这个数组用来记录每个位置可以由哪些水龙头覆盖到的最远点。然后我们通过遍历 ranges数组,填充max_range,根据每个水龙头的范围更新对应位置的最远覆盖范围。接着,我们从位置0开始遍历,每次选择能够扩展当前已覆盖区间的最远水龙头。如果在某个位置无法继续扩展,说明花园无法完全覆盖,直接返回 -1。最终通过贪心选择最少的水龙头数量。
测试用例分析:
对于minTaps(5, [3,4,1,1,0,0]),返回1,这意味着只需要一个水龙头就能覆盖整个花园。而对于minTaps(3, [0,0,0,0]),返回0,说明没有水龙头能够覆盖花园。
总结:
这个问题实际上就是一个区间覆盖问题,通过贪心策略,我们能够在每一步选择最优的水龙头,以最少的数量覆盖整个区间。它考察了我们对贪心算法的理解和如何处理区间问题。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。