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

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

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

इसलिए, यदि इनपुट nums =[5,8,6,3] k =8 जैसा है, तो आउटपुट 1 होगा, क्योंकि [5,8,6,3] के तत्वों का वर्तमान योग 22 है। यदि हम लंबाई 1 की उपसूची [6] हटा दें, तो योग 16 है, जो 8 से विभाज्य है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रेम :=(अंक + k में मौजूद सभी तत्वों का योग) mod k
  • यदि रेम 0 के समान है, तो
    • वापसी 0
  • n :=अंकों का आकार
  • अनुमान :=0
  • mp :=एक शब्दकोश, प्रारंभ में कुंजी 0 के लिए -1 स्टोर करें
  • res :=n
  • मैं के लिए 0 से n -1 की सीमा में, करो
    • अनुमान:=अनुमान + अंक[i]
    • m :=(presum + k) mod k
    • एमपी[एम] :=मैं
    • अगर (m - rem + k) mod k mp में मौजूद है, तो
      • res :=न्यूनतम रेस और (i - mp[(m - rem + k) mod k])
  • रिटर्न रेस अगर रेस n के समान नहीं है अन्यथा -1

उदाहरण

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

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))

इनपुट

[5,8,6,3], 8

आउटपुट

1

  1. पायथन में सर्कुलर सबलिस्ट की अधिकतम राशि खोजने का कार्यक्रम

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

  1. पायथन में सन्निहित कड़ाई से बढ़ती उपसूची की लंबाई खोजने का कार्यक्रम

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

  1. पायथन में दिए गए अक्षरों का उपयोग करके सबसे लंबी लंबाई ज्ञात करने का कार्यक्रम, जिसे बनाया जा सकता है

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