外包东西做的又慢又差,又不太好意思把他换掉,怎么搞?
今天又看到一个有趣的网友吐槽:外包的东西做得又慢又差,但又不太好意思换掉对方,这种情况到底该怎么搞呢?🤔
我想说,外包的痛苦大家都有体会。首先,外包的工资一般是我们内部员工的三分之一,怎么可能期望人家像我们一样高效?
你给的报酬,往往决定了人家的动力和付出的程度。想让外包做得又快又好,又不愿意给人家相应的资源和支持,这不是天方夜谭吗?🤑
其次,我完全赞同评论里说的:“如实根据工作输出速度和质量打绩效。”有时候我们程序员也会不好意思,觉得好像太直接了不太好。
但实际上,咱们自己也不想做冤大头啊!换句话说,外包也是一份工作,做得好,咱们当然要给奖励;做得差,咱们也不能让他“摸鱼”。
总之,工作是工作,不是交情。该给的资源就给,该批评的地方就要指出来。你委屈了自己,谁都不会为你撑腰。【备注:文末可领最新资料】
算法题:掉落的方块
今天我来跟大家聊聊一个经典的算法题:掉落的方块。这个题目看似简单,实际上却能帮助我们理解一些基础的算法思想,尤其是对于如何处理二维数组和模拟问题的思路。来,咱们一起看看这个题目!
题目大意
想象一下,你正玩一个类似俄罗斯方块的游戏。在游戏中,方块从顶部掉落,最终会停留在某一行,具体停留在哪一行取决于下面的空位情况。我们需要模拟这个过程,最终得到方块停下的位置。
假设我们的游戏区域是一个二维矩阵,宽度为 W,高度为 H,每个方块占据一个单元格,掉落的方块以列的方式掉下来,方块的“掉落”是根据每一列的空位情况来决定的。我们的目标是给定每个方块的掉落位置,计算最终它停留在哪一行。
解题思路
我们可以把这个问题当做是一个二维数组的操作问题。每一列的方块掉落时,它都会停留在该列最低的空白单元格。我们需要维护每一列的“高度”,即每列上方还有多少个方块。
为了简化问题,我们可以这样做:
使用一个数组 heights来记录每一列当前的高度。每次方块掉落时,根据 heights数组来判断它停留在哪一行。更新该列的 heights值,表示这个位置已被占据。
Python代码实现
让我们直接用代码来实现这个算法。
def fallingBlocks(w, h, positions):
# heights数组,用来记录每列的当前高度
heights = [0] * w
result = [] # 遍历每一个掉落的方块位置
for pos in positions:
# 计算该位置的掉落行数
drop_row = heights[pos]
result.append(drop_row)
# 更新该列的高度
heights[pos] += 1
return result
# 示例
w = 5 # 游戏区域宽度为5
h = 6 # 游戏区域高度为6
positions = [1, 2, 2, 3, 0, 1, 3, 3]
print(fallingBlocks(w, h, positions))
代码解释
heights数组:记录每一列当前的高度。初始时,所有列的高度都为 0。positions数组:表示每个方块掉落的位置。每次方块掉落时,根据掉落位置确定它停留的行。更新 heights数组:每次掉落后,我们需要更新掉落列的高度,这样下一次掉落时就能知道该列空余的位置。
运行示例
假设我们的游戏区域宽度是 5,高度是 6,方块掉落的顺序为 [1, 2, 2, 3, 0, 1, 3, 3],也就是说:
第一个方块掉落到列 1(从 0 开始索引),它会停在第 0 行。 第二个方块掉落到列 2,停在第 0 行。 第三个方块掉落到列 2,会停在第 1 行,因为第 0 行已经有方块了。 第四个方块掉落到列 3,停在第 0 行。 第五个方块掉落到列 0,停在第 0 行。 第六个方块掉落到列 1,会停在第 1 行。 第七个方块掉落到列 3,停在第 1 行。 第八个方块掉落到列 3,停在第 2 行。
最终,方块的停留位置为:[0, 0, 1, 0, 0, 1, 1, 2]。
时间复杂度分析
这个解法的时间复杂度是 O(n),其中 n 是方块的总数。我们需要遍历每一个方块的位置,查找它所在列的当前高度并更新它。由于每个操作是常数时间操作,所以总的时间复杂度是 O(n)。
空间复杂度分析
空间复杂度是 O(w),其中 w 是游戏区域的宽度。我们使用了一个大小为 w 的数组来记录每列的高度。
总结
这个题目通过模拟方块掉落的过程,帮助我们理解如何处理二维数组以及如何管理每列的状态。关键是维护一个 heights 数组,这个数组帮助我们跟踪每一列的空位情况,从而确定方块的掉落位置。其实,这种问题在游戏开发中很常见,理解了这个思路,对以后处理类似问题会很有帮助。
希望大家通过这个题目,也能对模拟和二维数组的处理有更深的理解!😎
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。