मान लीजिए हमारे पास 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 में सभी संख्याओं के वर्गों की सूची अवरोही क्रम में
- tmp में प्रत्येक इंडेक्स i और संबंधित संख्या n के लिए करें:
- 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