Re: [闲聊] 每日LeetCode

楼主: pandix (面包屌)   2022-12-18 13:24:04
739. Daily Temperatures
给你每天的气温,要你对每天算出到下一次气温比他高要隔几天
Example 1:
Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]
以第三天的75为例,下次比他高是76 -> 中间隔了四天
Example 2:
Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]
Example 3:
Input: temperatures = [30,60,90]
Output: [1,1,0]
思路:
1.这种找下个比他大的题型可以用 monotonic stack
维护一个递减的 stack,看新加入的人有没有机会更新前面的人
如果 stack[-1] 比新加入的小 代表 stack[-1] 后遇到第一个比他大的人就是新加入的
这时候就 pop 并且结算 stack[-1] (因为他找到第一个比他大的了)
直到 stack[-1] 比大于等于新加入的 这时候就能 append 他
整个 stack 依然会维持递减
2.隔几天就是要看 index 差多少,所以 stack 要存 index
Python code:
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
stk = []
res = [0]*len(temperatures)
for i, t in enumerate(temperatures):
while stk and temperatures[stk[-1]] < t:
res[stk[-1]] = i-stk[-1]
del stk[-1]
stk.append(i)
return res
最近好冷
作者: Rushia (みけねこ的鼻屎)   2022-12-18 13:27:00
大师
作者: ririoshi (角落住民)   2022-12-18 13:28:00
大师
作者: Rushia (みけねこ的鼻屎)   2022-12-18 15:26:00
我写的也90%像 懒得贴了

Links booklink

Contact Us: admin [ a t ] ucptt.com