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

पायथन का उपयोग करके आकार एम के नवीनतम समूह को खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक सरणी है, जिसमें 1 से n तक की संख्याओं का क्रमपरिवर्तन है। यदि हमारे पास आकार n की बाइनरी स्ट्रिंग है और शुरुआत में इसके सभी बिट्स शून्य पर सेट हैं। अब प्रत्येक चरण पर i (बाइनरी स्ट्रिंग और एआर दोनों के लिए 1 से अनुक्रमण शुरू होता है) 1 से n तक, स्थिति arr [i] पर बिट 1 पर सेट है। हमारे पास एक और मान m भी है, और हमें नवीनतम खोजने की आवश्यकता है जिस कदम पर m आकार के लोगों का एक समूह मौजूद है। यहाँ इकाई समूह का अर्थ 1s का सन्निहित विकल्प है, जिसे किसी भी दिशा में विस्तारित नहीं किया जा सकता है। हमें उस नवीनतम चरण का पता लगाना है जिस पर ठीक m लंबाई वाले इकाईयों का एक समूह मौजूद हो। अगर हमें ऐसा कोई समूह नहीं मिल रहा है, तो -1 लौटें।

इसलिए, यदि इनपुट arr =[3,5,1,2,4] m =3 जैसा है, तो आउटपुट 4 होगा, क्योंकि प्रारंभिक बाइनरी स्ट्रिंग "00000" है, फिर निम्नलिखित चरणों का पालन करें -

  • "00100", समूह:["1"]

  • "00101", समूह:["1", "1"]

  • "10101", समूह:["1", "1", "1"]

  • "11101", समूह:["111", "1"]

  • "11111", समूह:["11111"]

यहां नवीनतम चरण जिस पर आकार 3 का समूह मौजूद है वह चरण 4 है।

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

  • n :=गिरफ्तारी का आकार

  • संख्या :=0

  • उत्तर :=-1

  • l :=आकार n की एक सरणी, और 0 से भरें

  • r :=आकार n की एक सरणी, और 0 से भरें

  • मैं के लिए 0 से n -1 की सीमा में, करो

    • वक्र:=1

    • आईडीएक्स:=गिरफ्तारी [i] - 1

    • यदि r[idx], m के समान है, तो

      • अंक :=संख्या - 1

    • अगर l[idx] m के समान है, तो

      • अंक :=संख्या - 1

    • वक्र:=वक्र + एल[idx] + r[idx]

    • num :=num + cur m के समान है

    • अगर संख्या> 0, तो

      • उत्तर:=अधिकतम उत्तर, i + 1

    • अगर idx - l[idx]> 0, तो

      • r[idx - l[idx] - 1] :=cur

    • अगर idx + r[idx]

      • l[idx + r[idx] + 1] :=cur

  • वापसी उत्तर

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

उदाहरण

def solve(arr, m):
   n = len(arr)
   num = 0
   ans = -1
   l = [0] * n
   r = [0] * n
   for i in range(n):
      cur = 1
      idx = arr[i] - 1
      if r[idx] == m:
         num -= 1
      if l[idx] == m:
         num -= 1
      cur += l[idx] + r[idx]
      num += cur == m
      if num > 0:
         ans = max(ans, i + 1)
      if idx - l[idx] > 0:
         r[idx - l[idx] - 1] = cur
      if idx + r[idx] < n - 1:
         l[idx + r[idx] + 1] = cur
   return ans
arr = [3,5,1,2,4]
m = 3
print(solve(arr, m))

इनपुट

[3,5,1,2,4], 3

आउटपुट

4

  1. - कम फ़ंक्शन का उपयोग करके परिमेय संख्याओं के उत्पाद को खोजने के लिए पायथन प्रोग्राम

    मान लीजिए हमारे पास परिमेय संख्याओं की एक सूची है। हमें रिड्यूस फंक्शन का उपयोग करके उनके उत्पाद को खोजना होगा। कम () फ़ंक्शन बाएं से दाएं ऑब्जेक्ट्स की सूची पर संचयी रूप से दो तर्कों के साथ एक फ़ंक्शन लागू करता है। इसलिए, यदि इनपुट भिन्नों की तरह है =[(5,3),(2,8),(6,9),(5,12),(7,2)], तो आउटपुट (17

  1. पायथन में बहुभुज का क्षेत्रफल ज्ञात करने का कार्यक्रम पायथन में बहुभुज का क्षेत्रफल ज्ञात करने का कार्यक्रम

    मान लीजिए कि हमारे पास ऑर्डर किए गए बिंदुओं की एक सूची है जो 2 डी विमान पर एक साधारण बहुभुज समापन बिंदु का प्रतिनिधित्व करती है। हमें इस बहुभुज का क्षेत्रफल ज्ञात करना है। इसलिए, यदि इनपुट अंक =[(0, 0), (0,5), (3, 5), (3,0)] की तरह है, तो आउटपुट 15 होगा। इसे हल करने के लिए, हम इन चरणों का पालन क

  1. पायथन में बहुभुज की परिधि खोजने का कार्यक्रम पायथन में बहुभुज की परिधि खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास ऑर्डर किए गए बिंदुओं की एक सूची है जो 2 डी विमान पर एक साधारण बहुभुज समापन बिंदु का प्रतिनिधित्व करती है। हमें इस बहुभुज का परिमाप ज्ञात करना है। इसलिए, यदि इनपुट अंक =[(0, 0), (0,5), (3, 5), (3,0)] की तरह है, तो आउटपुट 16 होगा क्योंकि दो भुजाओं की लंबाई 3 है और दो भुजाओं