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

पायथन में सबसे लंबा अच्छा प्रदर्शन अंतराल

मान लीजिए हमारे पास घंटों की सूची है, यह किसी दिए गए कर्मचारी के लिए प्रति दिन काम किए गए घंटों की संख्या की सूची है। यहां एक दिन को थकाऊ दिन माना जाता है यदि और केवल यदि काम किए गए घंटों की संख्या (सख्ती से) 8 से अधिक है। एक अच्छा प्रदर्शन अंतराल दिनों का एक अंतराल है जिसके लिए थकाऊ दिनों की संख्या गैर-थकाऊ दिनों की संख्या से सख्ती से अधिक है। हमें सबसे लंबे अच्छे प्रदर्शन अंतराल की लंबाई ढूंढनी है। इसलिए यदि इनपुट [9,9,6,0,6,6,9] जैसा है, तो आउटपुट 3 होगा। ऐसा इसलिए है क्योंकि सबसे लंबा अच्छा प्रदर्शन अंतराल [9,9,6] है।

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

  • temp := 0 और ans := 0 सेट करें, एक मैप d बनाएं, और corner := 0
  • i के लिए 0 से घंटे सरणी के आकार - 1 तक की रेंज में
    • temp := temp + 1 यदि hours[i] > 8, अन्यथा -1
    • यदि hours[i] > 8, तो corner = 1
    • यदि temp > 0, तो ans := ans और i + 1 का अधिकतम
    • यदि temp मैप d में नहीं है, तो d[temp] := i
    • यदि temp - 1 मैप d में है, तो ans := ans और i - d[temp - 1] का अधिकतम

उदाहरण

class Solution(object):
    def longestWPI(self, hours):
        temp = 0
        ans = 0
        d = {}
        corner = 0
        for i in range(len(hours)):
            temp += 1 if hours[i] > 8 else -1
            if hours[i] > 8:
                corner = 1
            if temp > 0:
                ans = max(ans, i+1)
            if temp not in d:
                d[temp] = i
            if temp-1 in d:
                ans = max(ans, i-d[temp-1])
        return max(ans, 0)

ob = Solution()
print(ob.longestWPI([9,9,6,0,6,6,9]))

इनपुट

[9,9,6,0,6,6,9]

आउटपुट

3
  1. - पायथन में सबसे लंबा बढ़ता हुआ सबसीक्वेंस

    मान लीजिए हमारे पास पूर्णांकों की एक अनसॉर्टेड लिस्ट है। हमें सबसे लंबा बढ़ता हुआ सबसीक्वेंस ढूंढना है। इसलिए यदि इनपुट [10,9,2,5,3,7,101,18] है, तो आउटपुट 4 होगा, क्योंकि बढ़ता हुआ सबसीक्वेंस [2,3,7,101] है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - trail := लंबाई 0 से nums की लंबाई - 1 तक

  1. - पायथन में सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग

    मान लीजिए हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग ढूंढना है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है, तो सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग BAB है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: स्ट्रिंग की लंबाई के समान क्रम का

  1. - पायथन में बिना दोहराव वाले वर्णों का सबसे लंबा सबस्ट्रिंग

    मान लीजिए हमारे पास एक स्ट्रिंग है। हमें बिना वर्णों को दोहराए सबसे लंबा सबस्ट्रिंग ढूंढना है। इसलिए यदि स्ट्रिंग ABCABCBB जैसी है, तो परिणाम 3 होगा, क्योंकि लंबाई 3 का एक सबस्ट्रिंग है जो दोहरा रहा है। वह है ABC। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: i := 0, j := 0 सेट करें, जानकारी स्