일일 온도 T의 목록이 있다고 가정하면 입력의 각 날짜에 대해 더 따뜻한 온도까지 기다려야 하는 일수가 표시되는 목록을 반환해야 합니다. . 이것이 가능한 미래 날이 없으면 대신 0을 저장하십시오. 예를 들어, T =[73, 74, 75, 71, 69, 72, 76, 73]인 경우 출력은 [1, 1, 4, 2, 1, 1, 0, 0]입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- ans :=T와 같은 크기의 배열, 0으로 채움
- 하나의 스택을 정의하고 스택에 0을 삽입하고 i :=1
- 동안 i
- 스택 요소 수가 0이 아닌 동안 T[i]> T[stack top element]
- index :=스택 맨 위 요소
- ans[인덱스] :=i – 인덱스
- 스택에서 최상위 요소 삭제
- 스택 길이가 0이거나 T[i] <=T[stack top element]
- 스택에 i 삽입
- i를 1 증가
- 스택 요소 수가 0이 아닌 동안 T[i]> T[stack top element]
예제(파이썬)
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def dailyTemperatures(self, T): ans = [0 for i in range(len(T))] stack = [] stack.append(0) i=1 while i <len(T): while len(stack) and T[i]>T[stack[-1]]: index = stack[-1] ans[index] = i-index stack.pop() if not len(stack) or T[i]<=T[stack[-1]]: stack.append(i) i+=1 return ans ob1 = Solution() print(ob1.dailyTemperatures([73,74,75,71,69,72,76,73]))
입력
[73,74,75,71,69,72,76,73]
출력
[1, 1, 4, 2, 1, 1, 0, 0]