找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2767

积分

0

好友

373

主题
发表于 2 小时前 | 查看: 1| 回复: 0

实习工资发600,这已经不是打工了,这像公司拿你练手。

一张社交媒体帖子截图,内容为实习生吐槽工资仅发600元并经历补发过程

本来一个月才2500,已经是“饿不死但也别想活舒服”的档位了,结果还能给人少算一千多,最后到账600多,谁看了不脑门发麻。更离谱的是下个月也没正常,才发1800多。前面刚经历一波裁实习生,80%的人说没就没,剩下这批又被拖着不转正,工资还跟开盲盒一样,搁谁身上都得窝火。

有网友说,这种公司就是把实习生当临时耗材;也有人说,财务一开始不认账那下,味儿就已经出来了。最气人的还不是钱少,是你拿着劳动换来的东西,人家还能装没看见。最后靠截图把账掰正了,钱是补回来了,但那股恶心劲儿,真能记好几年。

算法题:每日温度

聊完闹心事,换个脑子。栈里塞了一串温度,这道算法题很多人第一眼就嫌它“像模板题”。真上手一写,最容易错的地方反而不是单调栈本身,而是你到底存什么、什么时候出栈、答案在谁身上填。

“每日温度”这题,给你一个数组,temperatures[i] 表示第 i 天温度,要求你算出每一天还要等几天才会出现更高温度。等不到就填 0

这题我一般不先盯着“找下一个更大元素”这句标准描述,我先看结果怎么落。比如:

temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
  • 第 0 天是 73,后面第 1 天 74 比它高,所以答案是 1。
  • 第 2 天是 75,得等到第 6 天 76,答案是 4。
  • 第 6 天后面没更高的,答案就是 0。

这种题暴力写法很直接,双层循环挨个往后找:

def daily_temperatures_v1(temperatures):
    n = len(temperatures)
    ans = [0] * n

    for i in range(n):
        for j in range(i + 1, n):
            if temperatures[j] > temperatures[i]:
                ans[i] = j - i
                break

    return ans

代码没毛病,但时间复杂度是 O(n^2)。数据一大,这种写法跑起来就肉眼可见地慢。

真正该上的,是单调栈

这里栈里别存温度值,存下标。这个细节挺关键。因为最后要填的是“间隔几天”,你只存温度,后面还得想办法找位置,等于又给自己加活。

思路其实就一句话:栈里维护一批“还没找到更高温度的下标”,并且这些下标对应的温度从栈底到栈顶递减。

当前温度一旦比栈顶温度高,说明栈顶这天终于等到答案了,直接出栈并计算天数差。

def daily_temperatures(temperatures):
    n = len(temperatures)
    ans = [0] * n
    stack = []  # 存下标,不存温度

    for i, temp in enumerate(temperatures):
        while stack and temperatures[stack[-1]] < temp:
            prev = stack.pop()
            ans[prev] = i - prev
        stack.append(i)

    return ans

73, 74, 75, 71 这段看就很顺。

  1. 先压 0
  2. 看到 74,比 73 大,0 出栈,ans[0] = 1
  3. 看到 751 再出栈,ans[1] = 1
  4. 看到 71,比 75 小,先压栈等着。

后面谁能把它弹出来,谁就是它右边第一个更高温度。

这题的味道就在这:每个元素最多进栈一次、出栈一次,所以总复杂度是 O(n),不是 while 看着吓人就真比双循环更慢。很多人刚学这类题,最容易在这儿犯嘀咕。

再补两个容易写别扭的点。

第一个,比较条件要写 >,对应代码里就是:

temperatures[stack[-1]] < temp

题目要的是“更高温度”,不是“大于等于”。相等不能出栈。

第二个,遍历结束后,栈里剩下的那些下标不用管,答案本来就该是 0。别再多写一段收尾逻辑,把简单题写复杂了。

这题背后其实就是一种很常见的处理方式:当前位置来了,不急着算自己,先看看能不能顺手把前面那些“悬而未决”的位置结掉。这类数据结构和解题思路,在云栈社区的算法板块里能找到更多深入的讨论和变式题解析。无论是实习的烦恼还是刷题的困惑,多交流总归能找到些共鸣和思路。




上一篇:马斯克官宣全球最大2nm芯片工厂TERAFAB:年产1太瓦算力,80%产能将部署至太空
下一篇:放弃硬扣接口,我用Playwright搞定后台数据自动化
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-28 10:13 , Processed in 0.914895 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表