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

Python प्रोग्राम - सबसे छोटी सबलिस्ट की लंबाई खोजें जिसे हटाकर योग k से विभाज्य हो जाए

सकारात्मक मानों वाली सूची nums और एक सकारात्मक संख्या k दी गई है। हमें सबसे छोटी सबलिस्ट (खाली भी हो सकती है) की लंबाई खोजनी है जिसे हम nums से हटा सकते हैं, ताकि शेष तत्वों का योग k से विभाज्य हो जाए। लेकिन हम पूरी सूची को नहीं हटा सकते। यदि ऐसी कोई सबलिस्ट नहीं है, तो -1 लौटाएं।

उदाहरण

इनपुट: nums = [5, 8, 6, 3], k = 8

आउटपुट: 1

व्याख्या: [5, 8, 6, 3] के तत्वों का वर्तमान योग 22 है। यदि हम लंबाई 1 की सबलिस्ट [6] हटाते हैं, तो योग 16 हो जाता है, जो 8 से विभाज्य है।

एल्गोरिदम (प्रीफिक्स सम + हैश मैप)

  1. rem := (sum(nums) + k) % k
  2. यदि rem == 0: 0 लौटाएं
  3. n := len(nums), presum := 0
  4. mp := {0: -1} (डिक्शनरी)
  5. res := n
  6. i 0 से n-1 तक:
    • presum += nums[i]
    • m := (presum + k) % k
    • mp[m] = i
    • यदि (m - rem + k) % k mp में मौजूद है:
      • res = min(res, i - mp[(m - rem + k) % k])
  7. res लौटाएं यदि res != n अन्यथा -1

Python कार्यान्वयन

def solve(nums, k):
    rem = (sum(nums) + k) % k
    if rem == 0:
        return 0
    n, presum = len(nums), 0
    mp = {0: -1}
    res = n
    for i in range(n):
        presum += nums[i]
        m = (presum + k) % k
        mp[m] = i
        if (m - rem + k) % k in mp:
            res = min(res, i - mp[(m - rem + k) % k])
    return res if res != n else -1

nums = [5, 8, 6, 3]
k = 8
print(solve(nums, k))  # आउटपुट: 1

इनपुट/आउटपुट

Input: [5, 8, 6, 3], 8
Output: 1
  1. - पायथन में सर्कुलर सबलिस्ट का अधिकतम योग खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, अब nums की एक सर्कुलर सूची पर विचार करें जहां शुरुआत और अंत पड़ोसी हैं। हमें सर्कुलर सूची में गैर-खाली सबलिस्ट का अधिकतम योग ढूंढना है। उदाहरण के लिए, यदि इनपुट nums = [2, 3, -7, 4, 5] है, तो आउटपुट 14 होगा, क्योंकि हम सबलिस्ट [4, 5, 2, 3] ले सकत

  1. - पायथन में सख्ती से बढ़ते सन्निकट सबलिस्ट की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें एक या शून्य तत्वों को हटाकर प्राप्त की जा सकने वाली सख्ती से बढ़ती सन्निकट सबलिस्ट की अधिकतम लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट nums = [30, 11, 12, 13, 14, 15, 18, 17, 32] है, तो आउटपुट 7 होगा, क्योंकि जब हम सूची में 18 को हटाते हैं

  1. - पायथन में दिए गए अक्षरों का उपयोग करके बनाए जा सकने वाले सबसे लंबे स्ट्रिंग की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास words नामक स्ट्रिंग्स की एक सूची और letters नामक एक अन्य स्ट्रिंग है, हमें words में सबसे लंबी स्ट्रिंग की लंबाई ढूंढनी है जिसे letters के वर्णों से बनाया जा सकता है। यदि कोई शब्द नहीं बनाया जा सकता, तो 0 लौटाएं। यहां हम अक्षरों का पुनः उपयोग नहीं कर सकते। उदाहरण के लिए, यदि इनप