สมมุติว่าเรามีอาร์เรย์ A ที่มีความยาวเป็นบวก เราต้องหาเส้นรอบรูปที่ใหญ่ที่สุดของสามเหลี่ยมที่มีพื้นที่ไม่เป็นศูนย์ ซึ่งประกอบขึ้นจาก 3 ความยาวเหล่านี้ เมื่อเป็นไปไม่ได้ที่จะสร้างสามเหลี่ยมใดๆ ของพื้นที่ที่ไม่ใช่ศูนย์ ให้คืนค่า 0
ดังนั้นหากอินพุตเป็น [3,6,2,3] เอาต์พุตจะเป็น 8
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เรียงลำดับรายการ A
- a :=ลบองค์ประกอบสุดท้ายออกจาก A
- b :=ลบองค์ประกอบสุดท้ายออกจาก A
- c :=ลบองค์ประกอบสุดท้ายออกจาก A
- ในขณะที่ b+c <=a ทำ
- ถ้าไม่ใช่ A ก็ไม่ใช่ศูนย์ แล้ว
- คืน 0
- a :=b
- b :=c
- c :=ลบองค์ประกอบสุดท้ายออกจาก A
- ถ้าไม่ใช่ A ก็ไม่ใช่ศูนย์ แล้ว
- ส่งคืน a+b+c
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
คลาสโซลูชัน:def ที่ใหญ่ที่สุดPerimeter(self, A):A.sort() a, b, c =A.pop(), A.pop(), A.pop() while b+c<=a:ถ้าไม่ใช่ A:คืนค่า 0 a, b, c =b, c, A.pop() return a+b+cob =Solution()print(ob.largestPerimeter([3,6,2,3]))ก่อน>อินพุต
[3,6,2,3]ผลลัพธ์
8