Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาจำนวนต้นไม้ขั้นต่ำจากรายการใบไม้ใน python


สมมติว่าเรามีรายการหมายเลขที่เรียกว่า nums รายการนี้แสดงโหนดปลายสุดในการข้ามผ่านของต้นไม้ ที่นี่โหนดภายในมีลูก 2 คนและค่าของโหนดนั้นเหมือนกับผลคูณของค่าลีฟที่ใหญ่ที่สุดของทรีย่อยทางซ้าย และค่าลีฟที่ใหญ่ที่สุดของทรีย่อยทางขวา เราต้องหาผลรวมของต้นไม้ที่มีค่าผลรวมขั้นต่ำ

ดังนั้น หากอินพุตเป็น nums =[3, 5, 10] เอาต์พุตจะเป็น 83

โปรแกรมหาจำนวนต้นไม้ขั้นต่ำจากรายการใบไม้ใน python

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • res :=ผลรวมขององค์ประกอบทั้งหมดเป็น nums
  • ในขณะที่ขนาดของ nums> 1 ทำ
    • i :=ดัชนีขององค์ประกอบขั้นต่ำของ nums
    • ซ้าย :=nums[i - 1] เมื่อ i> 0 ไม่เช่นนั้นอินฟินิตี้
    • right :=nums[i + 1] เมื่อ i
    • res :=res + (ขั้นต่ำของซ้ายและขวา) * องค์ประกอบ ith ของ nums จากนั้นลบองค์ประกอบ ith ออกจาก nums
  • ผลตอบแทน

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

โค้ดตัวอย่าง

class Solution:
   def solve(self, nums):
      res = sum(nums)
      while len(nums) > 1:
         i = nums.index(min(nums))
         left = nums[i - 1] if i > 0 else float("inf")
         right = nums[i + 1] if i < len(nums) - 1 else float("inf")
         res += min(left, right) * nums.pop(i)

      return res

ob = Solution()
nums = [3, 5, 10]
print(ob.solve(nums))

อินพุต

[3, 5, 10]

ผลลัพธ์

83