ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা আছে, আমাদের পরীক্ষা করতে হবে 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 :=সব সংখ্যার বর্গক্ষেত্রের তালিকা নিচের ক্রমে সংখ্যায়
- প্রতিটি সূচী i এবং tmp তে সংশ্লিষ্ট সংখ্যা n এর জন্য, করুন
- বেস :=n
- বামে :=i+1, ডানে :=tmp-1 এর আকার
- যখন বামে <=ডানে, কর
- t :=tmp[left] এবং tmp[ডান] দুটি তালিকায় যোগ দিন
- যদি t বেসের মত হয়, তাহলে
- সত্য ফেরান
- অন্যথায় যখন 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