Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में ऐरे में नाइस जोड़े गिनने का प्रोग्राम


मान लीजिए हमारे पास नॉन-नेगेटिव मानों वाला nums नामक एक ऐरे है। हमें ऐरे में मौजूद नाइस इंडेक्स जोड़े की संख्या ढूंढनी है, यदि उत्तर बहुत बड़ा है, तो उत्तर को 10^9+7 मॉड्यूलो वापस करें। यहां इंडेक्स का जोड़ा (i, j) नाइस कहलाता है जब वे निम्नलिखित सभी शर्तों को पूरा करते हैं:

  1. 0 <= i < j < nums का आकार
  2. nums[i] + rev(nums[j]) == nums[j] + rev(nums[i])

नोट - यहां rev() एक इंटीजर के केवल पॉजिटिव भाग को उलट देता है, इसलिए यदि rev(564) है, तो इसका मतलब 465 है, लेकिन यदि rev(540) है, तो यह 45 वापस करता है।

उदाहरण के लिए, यदि इनपुट nums = [97,2,42,11] है, तो आउटपुट 2 होगा क्योंकि दो जोड़े (0,2) और (1,3) हैं, पहले के लिए [97 + rev(42) = 97+24 = 121, और 42 + rev(97) = 42 + 79 = 121] और दूसरे के लिए [2 + rev(11) = 2 + 11 = 13 और 11 + rev(2) = 13]।

हल करने के चरण

  1. m := (10^9) + 7
  2. dic := एक खाली मैप जिसका डिफ़ॉल्ट मान 0 है।
  3. nums में प्रत्येक num के लिए:
    • rev := num का उल्टा
    • dic[num - rev] को 1 से बढ़ाएं।
  4. res := 0
  5. dic के सभी मानों के लिए val में लूप चलाएं:
    • res := res + (val * (val - 1)) // 2
  6. res % m वापस करें।

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

from collections import defaultdict
def solve(nums):
    m = (10**9) + 7
    dic = defaultdict(int)
    for num in nums:
        rev = int(str(num)[::-1])
        dic[num - rev] += 1
    res = 0
    for val in dic.values():
        res += (val * (val - 1)) // 2
    return res % m

nums = [97,2,42,11]
print(solve(nums))

इनपुट

[97,2,42,11]

आउटपुट

2
  1. - पायथन में योग 1 वाले फ्रैक्शन जोड़ों की संख्या गिनने का प्रोग्राम

    मान लीजिए हमारे पास फ्रैक्शन्स की एक सूची है जहां प्रत्येक फ्रैक्शन व्यक्तिगत सूचियों [numerator, denominator] के रूप में है जो संख्या (numerator / denominator) को दर्शाता है। हमें उन फ्रैक्शन जोड़ों की संख्या ढूंढनी है जिनका योग 1 है।उदाहरण के लिए, यदि इनपुट fractions = [[2, 7],[3, 12],[4, 14],[5,

  1. पायथन प्रोग्राम: सरणी में इनवर्जन गिनें पायथन प्रोग्राम: सरणी में इनवर्जन गिनें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक लिस्ट दी गई है, हमें आवश्यक इनवर्जन गिनने और प्रदर्शित करने हैं। इनवर्जन काउंट यह गिनकर प्राप्त किया जाता है कि सरणी को क्रमबद्ध करने के लिए कितने चरणों की आवश्यकता है। उदाहरण arr[j]): inv_count += 1 re

  1. पायथन प्रोग्राम: सरणी रोटेशन पायथन प्रोग्राम: सरणी रोटेशन

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक टेक्स्ट और एक पैटर्न दिया गया है, हमें पैटर्न और उसके क्रमपरिवर्तन (या एनाग्राम) की सभी घटनाओं को टेक्स्ट में प्रिंट करना है। उदाहरण # अधिकतम मान MAX = 300 # तुलना def compare(arr1, arr2): for i in range(MAX):