मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें यह जांचना होगा कि क्या तीन संख्याएं ए, बी और सी मौजूद हैं जैसे कि ए ^ 2 + बी ^ 2 =सी ^ 2।
इसलिए, अगर इनपुट [10, 2, 8, 5, 6] जैसा है, तो आउटपुट ट्रू होगा, जैसा कि 8 ^ 2 + 6 ^ 2 =64+36 =100 =10 ^ 2।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- tmp :=अवरोही क्रम में अंकों में सभी संख्याओं के वर्ग की सूची
- टीएमपी में प्रत्येक सूचकांक i और संबंधित संख्या n के लिए, करते हैं
- आधार:=n
- बाएं:=i+1, दाएं:=tmp-1 का आकार
- बाएं <=दाएं, करें
- t:=दो सूचियों में शामिल हों tmp[बाएं] और 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