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

पायथन में सबअरे के अधिकतम योग को m से मोड्यूलो करके ढूंढना


पायथन में सबअरे के अधिकतम योग को m से मोड्यूलो करके ढूंढना।

मान लीजिए हमारे पास n तत्वों की एक ऐरे nums है। हमारे पास एक और इंटीजर m है। हमें इसके किसी भी सबअरे के योग के अधिकतम मान को m से मोड्यूलो करके ढूंढना है।

उदाहरण के लिए, यदि इनपुट है nums = [1,5,7,3], m = 5, तो आउटपुट होगा 3 क्योंकि:

  • [1] mod 5 = 1
  • [5] mod 5 = 0
  • [7] mod 5 = 2
  • [3] mod 5 = 3
  • [1,5] mod 5 = 1
  • [5,7] mod 5 = 2
  • [7,3] mod 5 = 0
  • [1,5,7] mod 5 = 3
  • [5,7,3] mod 5 = 0
  • [1,5,7,3] mod 5 = 1

समाधान दृष्टिकोण

प्रीफिक्स सम मोड्यूलो m का उपयोग करें। प्रत्येक प्रीफिक्स सम s के लिए, हमें सबसे छोटा पिछला प्रीफिक्स सम ढूंढना है जो s से बड़ा है (ताकि (s - prev) % m अधिकतम हो)। सॉर्टेड कंटेनर के लिए bisect का उपयोग करें।

  • csum में प्रीफिक्स सम मोड्यूलो m की गणना करें।
  • seen = [0] (सॉर्टेड पिछले प्रीफिक्स सम) आरंभ करें।
  • प्रत्येक s के लिए csum में:
    • idx = bisect_left(seen, s) ढूंढें।
    • यदि idx < len(seen), तो max_sum = max(max_sum, s, (s - seen[idx]) % m) अपडेट करें।
    • अन्यथा max_sum = max(max_sum, s)।
    • insort_left(seen, s)।
  • max_sum लौटाएं।

पायथन कार्यान्वयन

import bisect

def solve(nums, m):
    csum = [nums[0] % m]
    for x in nums[1:]:
        csum.append((csum[-1] + x) % m)
    seen = [0]
    max_sum = -1
    for s in csum:
        idx = bisect.bisect_left(seen, s)
        if idx < len(seen):
            max_sum = max(max_sum, s, (s - seen[idx]) % m)
        else:
            max_sum = max(max_sum, s)
        bisect.insort_left(seen, s)
    return max_sum

nums = [1,5,7,3]
m = 5
print(solve(nums, m))

इनपुट

"pptpp", [(1,1),(1,4),(1,1),(0,2)]

आउटपुट

3

  1. Python प्रोग्राम में ऐरे का योग खोजना Python प्रोग्राम में ऐरे का योग खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे का योग निकालने की आवश्यकता है। पूरे ऐरे को पार करने और प्रत्येक इंडेक्स पर तत्व को जोड़कर योग प्राप्त करने का ब्रूट-फोर्स दृष्टिकोण नीचे चर्चा किया गया है। उदाहरण # sum फ़ंक्शन def

  1. - Python प्रोग्राम: तीन संख्याओं में से अधिकतम खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखेंगे जो तीन आंकड़ों में से अधिकतम राशि ढूंढता है। हमारे पास तीन संख्याएं होंगी, और हमारा लक्ष्य उन तीन संख्याओं में से अधिकतम संख्या ढूंढना है।बेहतर समझ के लिए कुछ नमूना टेस्ट केस देखें।इनपुट: a, b, c = 2, 34, 4 आउटपुट: 34इनपुट: a, b, c = 25, 3, 12 आउटपुट: 25इनप

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें दिए गए ऐरे का योग निकालने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का पालन कर सकते हैं यानी एक लिस्ट को ट्रैवर्स करना और प्रत्येक एलिमें