(스택, 대기열) 일일 온도

정수 배열이 제공됩니다. temperatures 일일 온도를 나타내며 배열을 반환합니다. answer ~하도록 하다 answer(i) 이후에 기다려야 하는 일 수입니다. ith 따뜻한 온도를 얻는 날. 이것이 가능한 미래의 날이 없다면 보류 answer(i) == 0 대신에.

예 1:

Input: temperatures = (73,74,75,71,69,72,76,73)
Output: (1,1,4,2,1,1,0,0)

예 2:

Input: temperatures = (30,40,50,60)
Output: (1,1,1,0)

예 3:

Input: temperatures = (30,60,90)
Output: (1,1,0)

제한:

  • 1 <= 온도.길이 <= 105
  • 30 <= 온도(i) <= 100

코드 작성

class Solution:
    def dailyTemperatures(self, temperatures: List(int)) -> List(int):
        answer = ()
        for idx1, value in enumerate(temperatures):            
            isExist = 0
            for idx2, com in enumerate(temperatures(idx1 + 1:)):
                print(com, value)
                if com > value :
                    isExist = 1
                    break
            print(isExist)
            answer.append(idx2 + isExist)
        return answer

  • 스택의 사용은 X입니다.
  • 시간복잡도는 O(N^2)
  • temperatures = (55,38,53,81,61,93,97,32,43,78) 테스트 케이스 오류

비정상 코드

from typing import List


class Solution:
    def dailyTemperatures(self, T: List(int)) -> List(int):
        answer = (0) * len(T)
        stack = ()
        for i, cur in enumerate(T):
            # 현재 온도가 스택 값보다 높다면 정답 처리
            while stack and cur > T(stack(-1)):
                last = stack.pop()
                answer(last) = i - last
            stack.append(i)

        return answer

  • 원시 인덱스 저장