মনে করুন nums নামক একটি সংখ্যার তালিকা আছে, আমাদের যাচাই করতে হবে যে آیا তিনটি সংখ্যা a, b, এবং c আছে যাতে a² + b² = c²।
উদাহরণস্বরূপ, ইনপুট [10, 2, 8, 5, 6] হলে আউটপুট হবে True, কারণ 8² + 6² = 64+36 = 100 = 10²।
সমাধানের ধাপসমূহ
- tmp := nums-এ থাকা সব সংখ্যার বর্গের তালিকা নিরবরতম ক্রমে
- প্রতিটি ইন্ডেক্স i এবং সংশ্লিষ্ট সংখ্যা n-এর জন্য tmp-এ,
- base := n
- left := i+1, right := tmp-এর আকার -1
- যখন left <= right,
- t := tmp[left] এবং tmp[right] যোগ করুন
- যদি t base-এর সমান হয়, তবে
- True ফেরত দিন
- অন্যথায় যখন t > base, তবে
- left := left + 1
- অন্যথায়,
- right := right - 1
- False ফেরত দিন
উদাহরণ
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