Python技术迷

男朋友是程序员,但是工作不稳定,有必要跟他结婚吗?

刚刷到个贴子:妹子吐槽男朋友是程序员,但工作不稳定,纠结要不要结婚。

Image

我觉得这事吧,重点不在“程序员”三个字,而是“不稳定”。程序员确实有行业周期,有时候加班累成狗,有时候裁员潮说来就来。但换个角度想,现在哪个行业又是真正稳定的呢?铁饭碗越来越少了。

网友们的回复我看了看,有人说“嫁给人不如嫁给钱”,也有人说“人靠谱比工作靠谱更重要”。我比较认同后者。工作不稳可以一起想办法,比如提升技能、规划财务,但如果人不靠谱,那婚姻就是个坑。婚姻不像找工作,没法随时跳槽。

说到底还是要看两个人是不是愿意一起扛不确定性。再大的风雨,如果能一起撑伞,就没那么可怕。【备注:文末可领最新资料】

面试题:将钱分给最多的儿童

就是有 children 个孩子和 money 块钱,每个孩子至少 1,还要求尽量多的小朋友刚好拿到 8。还有个坑:任何孩子不能刚好拿 4。问最多能让多少个孩子拿到 8。

先把“人手一块”的底线发掉:left = money - children。 接下来想让某个孩子从 1 变成 8,需要再补 7 块,所以我们贪心地尽量用 7 去堆满更多孩子:res = min(left // 7, children)。这一步就把能凑成 8 的孩子数先定住了。

然后有两处“拦路虎”要处理:

  1. 所有孩子都已是 8 但还剩钱如果 children == res,并且还有余钱没花完,那就意味着你得往某个已经 8 的孩子再塞钱,他就超过 8 了没问题;可问题在于我们为了让更多人是 8,不能让所有人都恰好 8 还留余钱。按题解的常见处理:res -= 1,空出一个不是 8 的孩子来承接溢出的钱。

  2. 出现“4 块钱”陷阱把 7 的包都发完后,可能余下 left % 7 == 3;这 3 块通常会落到尚未达 8 的某个孩子头上,使他从 1 变成 4,违规。 如果此时只剩 1 个未达 8 的孩子(remain_children == 1),就没有“分流”的对象了——典型做法是把前面一个凑 8 的名额让出来:res -= 1,这样就能把这 3 块与别的钱一起分掉,避免 4。

defmaximum_children_with_eight(money: int, children: int) -> int:
"""
    给定 money 与 children,每人至少 1,不能恰好 4,最大化恰好 8 的孩子数。
    返回最大数量,若基础的钱都不够分(money < children)则返回 -1。
    """

if money < children:
return-1

    left = money - children  # 去掉“人手一块”后的可分配余额
    res = min(left // 7, children)  # 先尽量堆出 8 块
    left -= res * 7
    remain_children = children - res

# 情况1:所有孩子都是8了,却还有钱要塞出去,只能牺牲一个8
if remain_children == 0and left > 0:
        res -= 1

# 情况2:只剩1个未达8的孩子,手里余3会把他从1变成4,需要牺牲一个8来打散
if remain_children == 1and left == 3:
        res -= 1

return res

整个过程都是常数级计算,**时间复杂度 O(1)、空间复杂度 O(1)**。 贪心理由也直观:把“补 7”尽量多地给出去,是产生 8 的唯一途径;后面两个修正规则,分别解决“余钱溢出”和“4 块钱禁区”的特殊场景。

# 不够每人1块
assert maximum_children_with_eight(2, 3) == -1
# 正好能让1个是8:基础发3,占去3,还剩7 -> 1个8
assert maximum_children_with_eight(10, 3) == 1
# 触发余钱溢出:所有人都8了还剩钱,降一位
assert maximum_children_with_eight(30, 3) == 2
# 触发“4块钱”陷阱:只剩1人且余3
assert maximum_children_with_eight(13, 2) == 0

就这样,核心就几行,坑全兜住了。你要是有一组特定数据,扔我我帮你跑一下结果也行。

-END-

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

🔥虎哥私藏精品🔥

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