एक अच्छे भोजन में दो अलग-अलग खाद्य पदार्थ होते हैं जिनमें दो की शक्ति के बराबर स्वादिष्टता का योग होता है। अच्छा भोजन बनाने के लिए आप कोई भी दो अलग-अलग खाद्य पदार्थ चुन सकते हैं।
आइए मान लें कि हमने पूर्णांकों की एक सरणी दी है जहां arr[i] भोजन के ith आइटम की स्वादिष्टता है, इस सूची से आपके द्वारा बनाए जा सकने वाले विभिन्न अच्छे भोजन की संख्या लौटाएं।
उदाहरण के लिए,
इनपुट-1 -
arr[ ] = {1, 3, 5, 7, 9}
आउटपुट -
4
स्पष्टीकरण - अच्छे भोजन हैं (1,3), (1,7), (3,5) और, (7,9)। उनके संबंधित योग 4, 8, 8 और 16 हैं, जो सभी 2 की घात हैं।
इनपुट-2 -
arr[ ]= {1,1,1,3,3,3,7}
आउटपुट -
15
स्पष्टीकरण - अच्छा भोजन (1,1) 3 तरह से, (1,3) 9 तरीकों से और (1,7) 3 तरीकों से होता है।
इस समस्या को हल करने के लिए इस्तेमाल किया जाने वाला तरीका
-
सकारात्मक पूर्णांकों की एक सरणी के रूप में इनपुट लें।
-
एक फ़ंक्शन गिनती जोड़े सभी सरणी तत्वों को पूर्णांकों की सूची के रूप में लेते हैं।
-
इनपुट ऐरे एलीमेंट को बढ़ते क्रम में क्रमबद्ध करें।
-
सरणी के प्रत्येक तत्व के लिए, अधिकतम योग ज्ञात करें जैसे कि प्रत्येक तत्व '2' की शक्ति में हो।
उदाहरण
class Solution: def countpairs(self, arr: List[int]) -> int: """ elem1 + elem2 == 1 << i elem1 = 2 << i - elem2 """ result = 0 seen = defaultdict(int) arr.sort() for d in arr: n = 1 while n <= d + d: ans = (ans + seen[n-d]) % (10 ** 9 + 7) n = n << 1 seen[d] += 1 return ans sol1= Solution() print(sol1.countpairs([1,1,1,3,3,3,7]))
आउटपुट
4