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

Python में बाइनरी सरणी में 0 के सूचकांक ढूंढना जिन्हें 1 से बदलकर 1s का सबसे लंबा सतत अनुक्रम प्राप्त हो - सेट-2


मान लीजिए हमारे पास एक बाइनरी सरणी है। हमें 0 की स्थिति ढूंढनी है जिसे 1 से बदलकर 1s का अधिकतम सतत अनुक्रम प्राप्त किया जा सके।

तो, यदि इनपुट [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1] की तरह है, तो आउटपुट 10 होगा, ताकि सरणी [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1] हो जाए।

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

  • i := 0,

  • n := A का आकार

  • count_left := 0, count_right := 0

  • max_i := -1, last_i := -1

  • count_max := 0

  • जब i < n, करें

    • यदि A[i], 1 के समान है, तो

      • count_right := count_right + 1

    • अन्यथा,

      • यदि last_i, -1 के समान नहीं है, तो

        • यदि count_right + count_left + 1 > count_max, तो

          • count_max := count_left + count_right + 1

          • max_i := last_i

      • last_i := i

      • count_left := count_right

      • count_right := 0

    • i := i + 1

  • यदि last_i, -1 के समान नहीं है, तो

    • यदि count_left + count_right + 1 > count_max, तो

      • count_max := count_left + count_right + 1

      • max_i := last_i

  • max_i वापस करें

उदाहरण

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

def find_max_one_index(A):     i = 0     n = len(A)     count_left = 0     count_right = 0     max_i = -1     last_i = -1     count_max = 0     while i < n:         if A[i] == 1:             count_right += 1         else:             if last_i != -1:                 if count_right + count_left + 1 > count_max:                     count_max = count_left + count_right + 1                     max_i = last_i                 last_i = i                 count_left = count_right                 count_right = 0         i += 1     if last_i != -1:         if count_left + count_right + 1 > count_max:             count_max = count_left + count_right + 1             max_i = last_i     return max_i A = [1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1] print(find_max_one_index(A))

इनपुट

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

आउटपुट

10

  1. - Python - दी गई बिटोनिक सीक्वेंस में बिटोनिक पॉइंट ढूंढना

    मान लीजिए हमारे पास एक बिटोनिक सीक्वेंस है, हमें इसमें बिटोनिक पॉइंट ढूंढना है। जैसा कि हम जानते हैं, एक बिटोनिक सीक्वेंस संख्याओं का एक क्रम है जो पहले सख्ती से बढ़ रहा है फिर एक निश्चित बिंदु के बाद सख्ती से घट रहा है। यह बिंदु बिटोनिक पॉइंट है। केवल बढ़ते या केवल घटते क्रम के लिए, बिटोनिक पॉइंट उ

  1. - Python में सबसे लंबा लगातार अनुक्रम

    मान लीजिए हमारे पास पूर्णांकों की एक सरणी है। हमें सबसे लंबे लगातार तत्व अनुक्रम की लंबाई ढूंढनी है। इसलिए यदि इनपुट [100, 4, 250, 1, 3, 2] जैसा है, तो उत्तर 4 होगा, क्योंकि सबसे लंबा लगातार अनुक्रम [1,2,3,4] है।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −सरणी को सेट बनाएं, longest := 0i के लिए

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

    आप प्रत्येक स्थिति से शुरू होने वाली प्रत्येक सबस्ट्रिंग की गिनती के लिए defaultdict का उपयोग कर सकते हैं। getsubs मेथड एक जेनरेटर मेथड है जो हर बार कॉल किए जाने पर एक छोटी सबस्ट्रिंग देता है। उदाहरण = 2] if filtered: maxkey = max(filtered, key=len) # सबसे लंबी स्ट्रिंग खोजें re