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

โปรแกรมตรวจสอบว่ารายการที่ระบุมี Pythagorean Triplets หรือไม่ใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องตรวจสอบว่ามีตัวเลขสามตัว a, b และ c อยู่หรือไม่ ดังนั้น a^2 + b^2 =c^2

ดังนั้น หากอินพุตเป็น [10, 2, 8, 5, 6] ผลลัพธ์จะเป็น True เช่น 8^2 + 6^2 =64+36 =100 =10^2

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

  • tmp :=รายการกำลังสองของตัวเลขทั้งหมดเป็น nums เรียงลำดับจากมากไปน้อย
  • สำหรับแต่ละดัชนี i และหมายเลขที่เกี่ยวข้อง n ใน tmp ให้ทำ
    • ฐาน :=n
    • ซ้าย :=i+1, ขวา :=ขนาดของ tmp -1
    • ขณะซ้าย <=ขวา ทำ
      • t :=เข้าร่วมสองรายการ tmp[left] และ tmp[right]
      • ถ้า t เท่ากับฐาน แล้ว
        • คืนค่า True
      • มิฉะนั้น เมื่อ t> เบส แล้ว
        • ซ้าย :=ซ้าย + 1
      • มิฉะนั้น
        • ขวา :=ขวา - 1
  • คืนค่าเท็จ

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

ตัวอย่าง

class Solution:
   def solve(self, nums):
      tmp = sorted([n*n for n in nums], reverse = True)
      for i, n in enumerate(tmp):
         base = n
         left = i+1; right = len(tmp)-1
         while left <= right:
            t = tmp[left]+tmp[right]
            if t == base:
               return True
            elif t > base:
               left += 1
            else:
               right -= 1
      return False
ob = Solution()
print(ob.solve([10, 2, 8, 5, 6]))

อินพุต

[10, 2, 8, 5, 6]

ผลลัพธ์

True