Given a list of daily temperatures T
, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0
instead.
For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73]
, your output should be [1, 1, 4, 2, 1, 1, 0, 0]
.
Note: The length of temperatures
will be in the range [1, 30000]
. Each temperature will be an integer in the range [30, 100]
.
class Solution(object):
def dailyTemperatures(self, T):
"""
:type T: List[int]
:rtype: List[int]
"""
dp = [30001 for _ in range(101)]
res = [0 for _ in range(len(T))]
for i in range(len(T)-1, -1, -1):
index = 30001
for j in range(T[i] + 1, 101):
if dp[j] < index:
index = dp[j]
if index < 30001:
res[i] = index - i
dp[T[i]] = i
return res
def dailyTemperatures(self, T):
"""
:type T: List[int]
:rtype: List[int]
"""
stack = []
res = [0 for i in range(len(T))]
for i in range(len(T)-1, -1, -1):
while len(stack) != 0 and T[stack[-1]] <= T[i]:
stack.remove(stack[-1])
if len(stack) == 0:
res[i] = 0
else:
res[i] = stack[-1] - i
stack.append(i)
return res
if __name__ == "__main__":
T = [89, 62, 70, 58, 47, 47, 46, 76, 100, 70]
solution = Solution()
print(solution.dailyTemperatures(T))
使用两种方法,但是都是从后往前遍历。第一种方法是使用数组,第二种方法是使用栈。