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

पायथन में समान प्रकार के कार्यों के बीच k समय अंतराल के साथ कार्यों को पूरा करने के लिए न्यूनतम समय खोजने का प्रोग्रम

मान लीजिए हमारे पास tasks नामक पूर्णांकों की एक सूची है जहां प्रत्येक आइटम एक अलग कार्य प्रकार का प्रतिनिधित्व करता है, हमारे पास एक गैर-ऋणात्मक पूर्णांक k भी है। प्रत्येक कार्य को पूरा करने में एक इकाई समय लगता है और कार्यों को सही क्रम में पूरा किया जाना चाहिए, लेकिन हमें दो समान प्रकार के कार्यों को करने के बीच k इकाई समय होना चाहिए। किसी भी समय, या तो हम एक कार्य कर सकते हैं या प्रतीक्षा कर सकते हैं। हमें सभी कार्यों को पूरा करने में लगने वाला समय ढूंढना है।

इसलिए, यदि इनपुट है tasks = [0, 1, 1, 2], k = 2, तो आउटपुट होगा 6, क्योंकि पहले दो कार्य अलग प्रकार के हैं, इसलिए उन्हें बिना किसी अंतराल के निष्पादित किया जा सकता है, अब समय 2 पर, अगला कार्य समान प्रकार का कार्य है इसलिए हमें 2-समय स्लॉट के लिए प्रतीक्षा करनी होगी, फिर कार्य करें और अंत में अन्य प्रकार का कार्य, प्रकार 2 है। तो यह कार्य करें। तो यह [0, 1, wait, wait, 1, 2] जैसा है। इससे हम पहचान सकते हैं, हमें 6 समय स्लॉट चाहिए।

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

  • tick := 0
  • slot := एक नया मैप
  • tasks में प्रत्येक t के लिए, करें:
    • tf := slot[t] यदि t slot में है
    • यदि tf शून्य नहीं है और tf - tick > 0, तो:
      • tick := tick + tf - tick
    • tick := tick + 1
    • slot[t] := tick + k
  • tick लौटाएं

उदाहरण

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

def solve(tasks, k):
    tick = 0
    slot = {}
    for t in tasks:
        tf = slot.get(t)
        if tf is not None and tf - tick > 0:
            tick += tf - tick
        tick += 1
        slot[t] = tick + k
    return tick
tasks = [0, 1, 1, 2]
k = 2
print(solve(tasks, k))

इनपुट

[0, 1, 1, 2], 2

आउटपुट

6
  1. - पायथन में K अद्वितीय वर्णों वाली स्ट्रिंग बनाने के लिए न्यूनतम परिवर्तनों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास लोअरकेस वर्णों की एक स्ट्रिंग s और एक संख्या k है। हमें स्ट्रिंग में न्यूनतम आवश्यक परिवर्तनों की संख्या ढूंढनी है ताकि परिणामी स्ट्रिंग में अधिकतम k विशिष्ट वर्ण हों। यहां परिवर्तन का अर्थ है एक वर्ण को किसी अन्य वर्ण में बदलना। उदाहरण के लिए, यदि इनपुट s = wxxyyzzxx, k = 3 है,

  1. - पायथन में दी गई शर्तों के साथ पूरे किए जा सकने वाले कार्यों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास कार्यों की एक सूची और लोगों की एक अन्य सूची है। tasks[i] iवें कार्य को करने के लिए आवश्यक ताकत निर्धारित करता है। और people[i] iवें व्यक्ति की ताकत निर्धारित करता है। अंत में, हमें उन कार्यों की संख्या ढूंढनी है जो पूरे किए जा सकते हैं यदि एक व्यक्ति अधिकतम एक कार्य कर सकता है।

  1. - पायथन में एक संख्या को दूसरी संख्या में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके: 1 से बढ़ाएं 2 से गुणा करें उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से ग