题目分析:1、用堆栈,存储降序的index,当前值比stack中最后一个值大则pop并输出距离,当前值比最后一个值小则append
2、用字典,从最后一个开始,如果有重复的温度,那么记录的是靠前的一个
class Solution: def numSubarrayProductLessThanK(self, T): # ans = [] # for i in range(len(T)): # right = i+1 # count = 1 # while right < len(T): # if T[i] >= T[right]: # count += 1 # right += 1 # else: # ans.append(count) # break # if right == len(T): # ans.append(0) # return ans # ans = [0] * len(T) # stack = [] # for i in range(len(T)): # while stack and T[stack[-1]] < T[i]: # cur = stack.pop() # ans[cur] = i - cur # stack.append(i) # return ans nxt = [float('inf')] * 102 ans = [0] * len(T) for i in range(len(T) - 1, -1, -1): warmer_index = min(nxt[t] for t in range(T[i]+1, 102)) if warmer_index < float('inf'): ans[i] = warmer_index - i nxt[T[i]] = i return ans