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
  • ในขณะที่ฉัน <ความยาวของ T
    • ในขณะที่การนับองค์ประกอบสแต็กไม่ใช่ 0 และ T[i]> T[องค์ประกอบบนสุดของสแต็ก]
      • ดัชนี :=สแต็คองค์ประกอบด้านบน
      • ans[index] :=i – ดัชนี
      • ลบองค์ประกอบด้านบนออกจากสแต็ก
    • ถ้าความยาวของ stack เป็น 0 หรือ T[i] <=T[stack top element]
      • แทรก i ลงในสแต็ก
    • เพิ่ม i ขึ้น 1
  • คืนสินค้า

ตัวอย่าง(Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อทำความเข้าใจ −

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]