Python技术迷

发薪日发现多了7万块,以为财务发错了,第二天上班才知道,这是公司的利润奖,平均每人3W~5W不等。

刚看到个贴子,说有人发薪日查银行卡,发现多了7万块,以为是财务算错了,结果第二天才知道是公司发的利润奖,平均每人都有3~5万。

Image

作为程序员,我第一反应是:这老板太良心了!一般情况下,我们常见的“奖金”不是年底画饼,就是绩效考核各种扣扣减减,最后到手比预期少一半。而这家公司是直接把利润拿出来分,说明它真的把员工当伙伴而不是工具人。

网友里有人调侃“财务手滑就算了吧”,我倒觉得这背后体现的是一种健康的企业文化——赚钱大家一起分,这样团队才更有动力。尤其在我们这种加班多、需求反复改的行业,一个突如其来的大红包,不光能缓解生活压力,更能让人觉得自己的付出被看见了。

说到底,钱是最实在的认可,比口号、比“画饼”都更让人心里踏实。【备注:文末可领最新资料】

面试题:蜗牛排序

昨天晚上十一点多,在公司楼下风挺大,我一手咖啡一手手机,小李问我:哥,那个…“蜗牛排序”怎么整啊?我当时脑子里嗡的一下——不是难,就是容易想偏。你们知道吧,蜗牛不直线爬,它绕着圈往里拱,二维数组就被它一层一层剥开,像吃烤冷面那种一卷一卷的,哦对是数组的API,不是吃的…

别上来就想着写很多判断,先把画面感建立。假设一张表格,四条边:上边、右边、下边、左边。蜗牛顺时针兜一圈,把最外层拿走,然后边界往里收一格,再兜下一圈。循环直到上下边界交叉或者左右边界交叉,嗯…就是那种“没有肉可剔了”的感觉。注意下,矩阵可能是m×n,不一定正方形,走法一样,但拐弯时要小心别重复拿元素,特别是只有一行或一列的时候,容易踩坑。

我就把当时发给小李的那段贴出来,别嫌啰嗦,变量名我取得直白点,免得半夜看眼花:

defsnail(matrix):
# 空的也得顾上
ifnot matrix ornot matrix[0]:
return []
    top, bottom = 0, len(matrix) - 1
    left, right = 0, len(matrix[0]) - 1
    out = []

while top <= bottom and left <= right:
# 从左到右
for c in range(left, right + 1):
            out.append(matrix[top][c])
        top += 1

# 从上到下
for r in range(top, bottom + 1):
            out.append(matrix[r][right])
        right -= 1

# 下面这两段要在边界检查后,再走,避免重复
if top <= bottom:
# 从右到左
for c in range(right, left - 1, -1):
                out.append(matrix[bottom][c])
            bottom -= 1

if left <= right:
# 从下到上
for r in range(bottom, top - 1, -1):
                out.append(matrix[r][left])
            left += 1

return out

# 小试一下
if __name__ == "__main__":
    m = [
        [1,  2,  3,  4],
        [5,  6,  7,  8],
        [9, 10, 11, 12]
    ]
    print(snail(m))  # [1,2,3,4,8,12,11,10,9,5,6,7]

有人问我那个复杂度怎么算,我困得眼睛直打架也能背出来:每个元素进队一次,出队零次,时间O(mn),空间如果不算输出就是O(1)。坑嘛,三个:一是空矩阵或空行,别越界;二是只有一行或一列时,后两段循环要靠if top <= bottom和if left <= right兜底;三是数据不是长方形就麻烦了,理论上应该保证每行等长,否则下标会炸,这时候要么前置规整,要么改成按“方向向量+已访问标记”的方案。

对了,有同学喜欢逆时针,思路一模一样,把四段遍历的顺序掉个个儿就行;还有人要按层输出,不拼成一维,那就把每圈当一组收集起来;要把它变成生成器也不难,把append换成yield,惰性遍历嘛,流式处理挺香。

-END-

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

🔥虎哥私藏精品🔥

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