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

पायथन में केवल एक तत्व हटाकर अधिकतम और न्यूनतम वाली सबलिस्ट्स की संख्या ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है और हम सूची में अधिकतम एक तत्व हटा सकते हैं। हमें उन सबलिस्ट्स की अधिकतम संख्या ज्ञात करनी है जिनमें परिणामी सूची के अधिकतम और न्यूनतम मान दोनों हों।

इसलिए, यदि इनपुट nums = [3, 2, 6, 2, 4, 10] जैसा है, तो आउटपुट 8 होगा, क्योंकि यदि हम 10 हटाते हैं तो हमें [3, 2, 6, 2, 4] मिलेगा और आठ सबलिस्ट्स हैं जिनमें अधिकतम और न्यूनतम दोनों हैं:

  • [2, 6]

  • [6, 2]

  • [2, 6, 2]

  • [3, 2, 6]

  • [6, 2, 4]

  • [2, 6, 2, 4]

  • [3, 2, 6, 2]

  • [3, 2, 6, 2, 4]

हल करने के चरण

  • check() फ़ंक्शन परिभाषित करें। यह lst लेगा

    • mn := lst का न्यूनतम, mx := lst का अधिकतम

    • min_pos := null, max_pos := null

    • ret := 0

    • प्रत्येक इंडेक्स i और मान num के लिए lst में, करें

      • यदि num, mn के समान है, तो min_pos := i

      • यदि num, mx के समान है, तो max_pos := i

      • यदि min_pos null है या max_pos null है, तो अगले इटरेशन पर जाएं

      • ret := ret + min_pos और (max_pos + 1) का न्यूनतम

    • ret लौटाएं

  • मुख्य विधि से निम्नलिखित करें:

    • यदि nums का आकार <= 1, तो nums का आकार लौटाएं

    • ret := check(nums)

    • प्रत्येक rem_cand के लिए [nums का न्यूनतम, nums का अधिकतम] में, करें

      • यदि rem_cand की घटना 1 है, तो

        • idx := nums में rem_cand का इंडेक्स

        • ret := ret और check(nums[0 से idx-1] + nums[idx+1 से अंत]) का अधिकतम

    • ret लौटाएं

    उदाहरण

    class Solution:
        def solve(self, nums):
            if len(nums) <= 1:
                return len(nums)
            def check(lst):
                mn, mx = min(lst), max(lst)
                min_pos, max_pos = None, None
                ret = 0
                for i, num in enumerate(lst):
                    if num == mn:
                        min_pos = i
                    if num == mx:
                        max_pos = i
                    if min_pos is None or max_pos is None:
                        continue
                    ret += min(min_pos, max_pos) + 1
                return ret
            ret = check(nums)
            for rem_cand in [min(nums), max(nums)]:
                if nums.count(rem_cand) == 1:
                    idx = nums.index(rem_cand)
                    ret = max(ret, check(nums[:idx] + nums[idx + 1:]))
            return ret
    
    ob = Solution()
    nums = [3, 2, 6, 2, 4, 10]
    print(ob.solve(nums))
    

    इनपुट

    [3, 2, 6, 2, 4, 10]

    आउटपुट

    8
  1. पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास रंगों (R, G, B) की एक लिस्ट है। अब यदि दो अलग-अलग रंग अगल-बगल हैं तो वे तीसरे रंग के एकल रंग आइटम में बदल सकते हैं। हमें किसी भी संभावित परिवर्तन अनुक्रम के बाद शेष सबसे छोटी संख्या ढूंढनी है।उदाहरण के लिए, यदि इनपुट colors = [G, R, G, B, R] है, तो आउटपुट 1 होगा क्योंकि यह नीचे द

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

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

  1. - सूची में अधिकतम और न्यूनतम तत्व की स्थिति खोजने का पायथन प्रोग्राम

    समस्या विवरण पायथन में अधिकतम, न्यूनतम तत्व और उनकी स्थिति खोजना बहुत आसान है। पायथन विभिन्न इनबिल्ट फंक्शन प्रदान करता है। min() सरणी में न्यूनतम मान खोजने के लिए उपयोग किया जाता है, max() अधिकतम मान खोजने के लिए उपयोग किया जाता है। index() तत्व के इंडेक्स खोजने के लिए उपयोग किया जाता है। एल्गोरिद