समस्या विवरण
संख्याओं की सूची nums दी गई है, जांचें कि क्या दो संख्याएं ऐसी हैं कि एक दूसरी का तिगुना (3x) है।
उदाहरण
इनपुट: [2, 3, 10, 7, 9]
आउटपुट: True (9, 3 का तिगुना है)
एल्गोरिदम (टू-पॉइंटर, सॉर्ट के बाद)
- सूची को सॉर्ट करें
i = 0,j = 1- जब तक
j < len(nums):- यदि
3*nums[i] == nums[j]:True - यदि
3*nums[i] > nums[j]:j++ - अन्यथा:
i++
- यदि
Falseवापस करें
पायथन कार्यान्वयन
class Solution:
def solve(self, n):
i = 0
n.sort()
j = 1
while j < len(n):
if 3 * n[i] == n[j]:
return True
if 3 * n[i] > n[j]:
j += 1
else:
i += 1
return False
ob = Solution()
print(ob.solve([2, 3, 10, 7, 9]))
इनपुट
[2, 3, 10, 7, 9]
आउटपुट
True
वैकल्पिक: सेट-आधारित (O(n))
def has_triple(nums):
s = set(nums)
for x in nums:
if 3 * x in s:
return True
return False