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

Chương trình kiểm tra xem danh sách đã cho có bộ ba Pythagorean hay không bằng Python

Giả sử chúng ta có một danh sách các số được gọi là num, chúng ta phải kiểm tra xem có tồn tại các số a, b và c sao cho a ^ 2 + b ^ 2 =c ^ 2 hay không.

Vì vậy, nếu đầu vào là [10, 2, 8, 5, 6], thì đầu ra sẽ là Đúng, là 8 ^ 2 + 6 ^ 2 =64 + 36 =100 =10 ^ 2.

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

  • tmp:=danh sách bình phương của tất cả các số theo nums theo thứ tự giảm dần
  • đối với mỗi chỉ số i và số n tương ứng trong tmp, thực hiện
    • cơ sở:=n
    • left:=i + 1, right:=size of tmp -1
    • khi left <=right, thực hiện
      • t:=nối hai danh sách tmp [trái] và tmp [phải]
      • nếu t giống với cơ sở, thì
        • trả về True
      • ngược lại khi t> cơ sở, thì
        • left:=left + 1
      • nếu không,
        • right:=right - 1
  • trả về Sai

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

Ví dụ

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

Đầu vào

[10, 2, 8, 5, 6]

Đầu ra

True