Computer >> Máy Tính >  >> Lập trình >> C ++

Nhiệt độ hàng ngày bằng Python


Giả sử chúng ta có danh sách nhiệt độ hàng ngày T, chúng ta phải trả về một danh sách sao cho mỗi ngày trong đầu vào cho biết chúng ta sẽ phải đợi bao nhiêu ngày cho đến khi nhiệt độ ấm hơn . Nếu không có ngày nào trong tương lai mà điều này có thể xảy ra, hãy lưu trữ số 0 để thay thế. Ví dụ:nếu T =[73, 74, 75, 71, 69, 72, 76, 73], đầu ra sẽ là [1, 1, 4, 2, 1, 1, 0, 0].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=một mảng có kích thước giống như T và điền vào mảng này bằng 0
  • xác định một ngăn xếp và chèn 0 vào ngăn xếp và i:=1
  • while i <độ dài của T
    • trong khi số phần tử ngăn xếp không phải là 0 và T [i]> T [phần tử trên cùng ngăn xếp]
      • index:=phần tử trên cùng của ngăn xếp
      • ans [index]:=i - index
      • xóa phần tử trên cùng khỏi ngăn xếp
    • nếu độ dài của ngăn xếp là 0 hoặc T [i] <=T [phần tử trên cùng của ngăn xếp]
      • chèn tôi vào ngăn xếp
    • tăng tôi lên 1
  • trả lại ans

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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]))

Đầu vào

[73,74,75,71,69,72,76,73]

Đầu ra

[1, 1, 4, 2, 1, 1, 0, 0]