Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

Python의 일일 온도


일일 온도 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 증가
  • 반환
  • 예제(파이썬)

    더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

    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]