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

पायथन का उपयोग करके एक तत्व हटाने के बाद 1 के सबसे लंबे सबएरे को खोजने का प्रोग्राम


मान लीजिए हमारे पास nums नामक एक बाइनरी सरणी है, हम इससे एक तत्व हटा सकते हैं। हमें परिणामी सरणी में केवल 1 वाले सबसे लंबे गैर-खाली सबएरे का आकार ढूंढना है। यदि ऐसा कोई सबएरे नहीं है, तो 0 वापस करें।

उदाहरण के लिए, यदि इनपुट nums = [1,0,1,1,1,0,1,1,0] है, तो आउटपुट 5 होगा क्योंकि स्थिति 5 से 0 हटाकर, हमें सबएरे [1,1,1,1,1] मिल सकता है जिसमें पांच 1 हैं।

हल करने के चरण

  • यदि nums में 0 नहीं है, तो

    • nums का आकार - 1 वापस करें

  • यदि nums में 1 नहीं है, तो

    • 0 वापस करें

  • a := एक नई सूची

  • cnt := 0

  • nums में प्रत्येक i के लिए, करें

    • यदि i, 0 के समान है, तो

      • यदि cnt, 0 के समान नहीं है, तो

        • cnt को a के अंत में डालें

        • cnt := 0

      • i को a के अंत में डालें

      • अन्यथा,

        • cnt := cnt + 1

  • यदि cnt, 0 के समान नहीं है, तो

    • cnt को a के अंत में डालें

  • Max := 0

  • i को 0 से a के आकार तक की रेंज में लिए करें

    • यदि a[i], 0 के समान नहीं है, तो

      • अगले इटरेशन के लिए जाएं

    • यदि a[i], 0 के समान है और i, a के आकार - 1 के समान है, तो

      • Max := Max और a[i-1] का अधिकतम

    • अन्यथा जब a[i], 0 के समान है और i, 0 के समान है, तो

      • Max := Max और a[i+1] का अधिकतम

    • अन्यथा जब a[i], 0 के समान है, तो

      • Max := Max और (a[i+1] + a[i-1]) का अधिकतम

  • Max वापस करें

उदाहरण

def solve(nums):
    if 0 not in nums:
        return len(nums) - 1
    if 1 not in nums:
        return 0
    a = []
    cnt = 0
    for i in nums:
        if i == 0:
            if cnt != 0:
                a.append(cnt)
                cnt = 0
            a.append(i)
        else:
            cnt += 1
    if cnt != 0:
        a.append(cnt)
    Max = 0
    for i in range(len(a)):
        if a[i] != 0:
            continue
        if a[i] == 0 and i == len(a) - 1:
            Max = max(Max, a[i-1])
        elif a[i] == 0 and i == 0:
            Max = max(Max, a[i+1])
        elif a[i] == 0:
            Max = max(Max, a[i+1] + a[i-1])
    return Max

nums = [1,0,1,1,1,0,1,1,0]
print(solve(nums))

इनपुट

[1,0,1,1,1,0,1,1,0]

आउटपुट

5
  1. - पायथन में एक जोड़ी बिट्स स्वैप करके सबसे लंबे 1s की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है। यदि हम स्ट्रिंग में अधिकतम एक जोड़ी वर्णों को स्वैप कर सकते हैं, तो हमें परिणामी सबसे लंबे सन्निहित 1s के सबस्ट्रिंग की लंबाई ढूंढनी है।उदाहरण के लिए, यदि इनपुट s = 1111011111 है, तो आउटपुट 9 होगा, क्योंकि हम s[4] और s[9] को स्वैप करके 9 लगातार 1s प्राप्त

  1. - पायथन में K इन्क्रीमेंट के बाद सबसे लंबी समतुल्य सबलिस्ट खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और k है। एक ऑपरेशन पर विचार करें जहां हम किसी एक तत्व को एक बार बढ़ा सकते हैं। यदि हम अधिकतम k बार ऑपरेशन कर सकते हैं, तो हमें समान तत्वों वाली सबसे लंबी सबलिस्ट ढूंढनी है। उदाहरण के लिए, यदि इनपुट nums = [3, 5, 9, 6, 10, 7] और k = 6 है, तो आउटपुट 3

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

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