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

पायथन में अंतराल समय के आधार पर अधिकतम कोर्स लेने का प्रोग्राम

कोर्स के अंतराल [start, end] की एक सूची दी गई है। हम एक समय में केवल एक कोर्स ले सकते हैं, और अगला कोर्स पिछले कोर्स के अंत समय के बाद शुरू होना चाहिए। अधिकतम कितने कोर्स लिए जा सकते हैं?

उदाहरण

इनपुट: times = [[3, 6], [6, 9], [7, 8], [9, 11]]

आउटपुट: 3

चुने गए कोर्स: [3, 6], [7, 8], [9, 11]

एल्गोरिदम (लालची दृष्टिकोण)

  1. कोर्स को उनके अंत समय (end) के आधार पर आरोही क्रम में सॉर्ट करें।
  2. counter = 0 और end = -1 प्रारंभ करें।
  3. प्रत्येक कोर्स [s, e] के लिए:
    • यदि s > end (सख्ती से बाद में शुरू होता है), तो:
      • counter += 1
      • end = e
  4. counter वापस करें।

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

class Solution:
    def solve(self, times):
        # अंत समय के अनुसार सॉर्ट करें
        times.sort(key=lambda x: x[1])
        counter = 0
        end = -1
        for s, e in times:
            if s > end:
                counter += 1
                end = e
        return counter

# परीक्षण
ob = Solution()
times = [[3, 6], [6, 9], [7, 8], [9, 11]]
print(ob.solve(times))  # आउटपुट: 3

क्यों काम करता है?

सबसे पहले खत्म होने वाले कोर्स को चुनने से भविष्य के कोर्स के लिए अधिकतम समय बचता है। यह क्लासिक "इंटरवल शेड्यूलिंग" समस्या का लालची समाधान है।

समय जटिलता

  • सॉर्टिंग के कारण O(n log n)।
  • स्थान जटिलता: O(1) अतिरिक्त (इन-प्लेस सॉर्ट मानकर)।

नोट

यदि कोर्स के शुरू और अंत समय समान हो सकते हैं (जैसे [3,6] और [6,9]), तो शर्त s >= end का उपयोग करें। यहां s > end उपयोग किया गया है जैसा कि समस्या विवरण में "बाद में" कहा गया है।

  1. - पायथन में स्टॉक मार्केट में कई बार खरीद-बिक्री करके प्राप्त अधिकतम लाभ खोजने का प्रोग्राम

    मान लीजिए हमारे पास prices नामक सूची है जो किसी कंपनी के स्टॉक की कीमतों को कालानुक्रमिक क्रम में दर्शाती है। हमें उस अधिकतम लाभ को ढूंढना है जो हम उस स्टॉक को कितनी भी बार खरीद और बेचकर कमा सकते थे। हमें ध्यान रखना होगा कि हम बेचने से पहले खरीदना होगा। उदाहरण के लिए, यदि इनपुट है prices = [10, 50,

  1. - Python प्रोग्राम में अभाज्य संख्या खोजने के विभिन्न तरीकों का विश्लेषण

    इस ट्यूटोरियल में, हम अभाज्य संख्या खोजने के विभिन्न तरीकों और प्रत्येक विधि के लिए आवश्यक समय को देखेंगे। हम निष्पादन समय की गणना के लिए time मॉड्यूल का उपयोग करेंगे।विधि-1यह अभाज्य संख्या खोजने की एक सामान्य विधि है।यदि संख्या एक से कम या बराबर है, तो False लौटाएं।यदि संख्या किसी संख्या से विभाज्य

  1. - पायथन प्रोग्राम: तीन नंबर्स में अधिकतम

    तीन नंबर a, b और c दिए गए हैं, हमारा कार्य दिए गए नंबरों में से अधिकतम एलिमेंट ढूंढना है।उदाहरणInput: a = 2, b = 4, c = 3 Output: 4एल्गोरिदमचरण 1: तीन यूजर इनपुट नंबर इनपुट करें। चरण 2: तीन नंबर्स को लिस्ट में जोड़ें। चरण 3: सबसे बड़ी संख्या खोजने के लिए max() फंक्शन का उपयोग करें max(lst)। चरण 4: औ