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

Python में टास्क को शेड्यूल करके सबसे कम समय में पूरा करने का प्रोग्राम


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

तो, यदि इनपुट nums = [2, 2, 2, 3, 3, 2], k = 1 जैसा है, तो आउटपुट 7 होगा, क्योंकि इष्टतम क्रम [2, 3, 2, 3, 2, WAITING, 2] है।

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

  • c := nums में सभी मानों की गिनती
  • ans := 0, lastsize := 0
  • जब तक c नॉन-ज़ीरो है, करें
    • lastsize := c का आकार
    • c के सबसे सामान्य (k + 1) मानों में प्रत्येक मान x के लिए, करें
      • c[x] := c[x] - 1
      • यदि c[x], 0 के समान है, तो c[x] हटाएं
    • ans := ans + k + 1
  • ans + lastsize - (k + 1) लौटाएं

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

उदाहरण


class Solution:
    def solve(self, nums, k):
        from collections import Counter
        c = Counter(nums)
        ans = 0
        lastsize = 0
        while c:
            lastsize = len(c)
            for x, _ in c.most_common(k + 1):
                c[x] -= 1
                if c[x] == 0:
                    del c[x]
            ans += k + 1
        return ans + lastsize - (k + 1)

ob1 = Solution()
nums = [2, 2, 2, 3, 3, 2]
k = 1
print(ob1.solve(nums, k))

इनपुट

[2, 2, 2, 3, 3, 2], 1

आउटपुट

7
  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्

  1. - पायथन प्रोग्राम: 2D ऐरे में k-वां सबसे छोटा एलिमेंट खोजना

    एक n×n यूजर इनपुट इंटीजर मैट्रिक्स दिया गया है और k का मान। हमारा कार्य 2D ऐरे में k-वां सबसे छोटा एलिमेंट ढूंढना है। यहां हम heapq मॉड्यूल का उपयोग करते हैं। पायथन में हीप क्यू (या heapq) उपलब्ध है। इस मॉड्यूल की तकनीक यह है कि हर बार हीप एलिमेंट का सबसे छोटा पॉप किया जाता है (मिन हीप)। nsmallest()

  1. - पायथन प्रोग्राम के निष्पादन का समय कैसे प्राप्त करें?

    किसी प्रोग्राम के निष्पादन समय को मापने के लिए, या तो time.clock() या time.time() फंक्शन्स का उपयोग करें। पायथन डॉक्स कहते हैं कि इस फंक्शन का उपयोग बेंचमार्किंग उद्देश्यों के लिए किया जाना चाहिए। उदाहरण import time t0 = time.clock() print(Hello) t1 = time.clock() - t0 print(Time elapsed: , t1 - t