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

पायथन में एक छिपे हुए सरणी में सबसे लगातार तत्व के सूचकांक का पता लगाने के लिए कार्यक्रम

मान लीजिए, हमें 'टेस्टअरे' नामक एक वर्ग दिया गया है जिसमें एक निजी सरणी है जिसमें केवल 0 या 1 मान हो सकते हैं; और दो सार्वजनिक सदस्य कार्य लंबाई () और क्वेरी ()। फ़ंक्शन लंबाई () सरणी की लंबाई देता है और फ़ंक्शन क्वेरी () सरणी में विभिन्न मानों की तुलना करते हुए तीन अलग-अलग मान देता है। फ़ंक्शन इनपुट के रूप में चार मान p, q, r, s लेता है और इस तरह काम करता है -

  • यदि सरणी के दिए गए अनुक्रमणिका में सभी चार मान 0 या 1 हैं, तो यह 4 लौटाता है।

  • अन्यथा यदि सरणी के दिए गए अनुक्रमणिका में कोई तीन मान समान हैं और चौथा मान भिन्न है, तो यह 2 लौटाता है।

  • अन्यथा यदि सरणी के दिए गए अनुक्रमणिका में दो मान 0 और दो मान 1 हैं, तो यह 0 देता है।

हमें उस तत्व की अनुक्रमणिका का पता लगाना है जो सरणी में सबसे अधिक बार-बार होता है, बिना सरणी तक पहुंच के और केवल कक्षा के सदस्य कार्यों का उपयोग किए बिना। यदि सरणी में 0 और 1 की समान संख्या है, तो यह मान -1 देता है।

इसलिए, यदि इनपुट सरणी =[0, 1, 1, 0, 1, 1, 1, 0] की तरह है, तो आउटपुट 2 होगा सरणी के सूचकांक 2 में, मान 1 है जो सबसे अधिक बार-बार होता है सरणी में मान। इसी तरह, उत्तर 1, 4, 5, 6 भी सत्य हैं क्योंकि अनुक्रमणिका में भी 1 का मान होता है।

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

  • n:=लंबाई ()

  • ग्रुपए:=1

  • ग्रुपबी:=0

  • aIdx:=शून्य

  • bIdx:=शून्य

  • पहला:=:=क्वेरी(0, 1, 2, 3)

  • दूसरा:=क्वेरी (0, 1, 2, 4)

  • मैं के लिए 4 से n की सीमा में, करें

    • यदि क्वेरी (0, 1, 2, i) पहले जैसी ही है, तो

      • ग्रुपए:=ग्रुपए+1

      • aIdx :=मैं

    • अन्यथा,

      • ग्रुपबी:=ग्रुपबी+1

      • बीआईडीएक्स:=मैं

  • मेरे लिए 0 से 2 की सीमा में, करें

    • अगला:=नई सूची

    • 1 से 4 की श्रेणी में v के लिए, करें

      • अगर v मेरे जैसा नहीं है, तो

        • nxt के अंत में v जोड़ें

    • यदि क्वेरी (nxt का मान) दूसरे के समान है, तो

      • ग्रुपए:=ग्रुपए + 1

      • aIdx :=मैं

    • अन्यथा,

      • ग्रुपबी:=ग्रुपबी+1

      • बीआईडीएक्स:=मैं

  • अगर ग्रुपए>ग्रुपबी, तो

    • वापसी aIdx

  • अन्यथा, अगर ग्रुपबी>ग्रुपए, तो

    • वापसी aIdx

  • अन्यथा,

    • वापसी -1

उदाहरण (पायथन)

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

class TestArray:
   def __init__(self, array) -> None:
      self.__arr = array

   def length(self):
      return len(self.__arr)

   def query(self, p, q, r, s):
      val = self.__arr[p] + self.__arr[q] + self.__arr[r] + self.__arr[s]
      if val == 4 or val == 0:
         return 4
      elif val == 1 or val == 3:
         return 2
      elif val == 2:
         return 0

def solve(reader):
   n,groupA,groupB,aIdx,bIdx=reader.length(),1,0,None,None
   first,second=reader.query(0,1,2,3),reader.query(0,1,2,4)
   for i in range(4,n):
      if reader.query(0,1,2,i)==first:
         groupA,aIdx=groupA+1,i
      else:
         groupB,bIdx=groupB+1,i
   for i in range(3):
      nxt=[v for v in [0,1,2,3,4] if v!=i]
      if reader.query(*nxt)==second:
         groupA,aIdx=groupA+1,i
      else:
         groupB,bIdx=groupB+1,i
   return aIdx if groupA>groupB else bIdx if groupB>groupA else -1

arr_ob = TestArray([0, 1, 1, 0, 1, 1, 1, 0])
print(solve(arr_ob))

इनपुट

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

आउटपुट

2

  1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें सरणी के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूटफोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके सबसे बड़े तत्व की गणना करते हैं और तत्व प्राप्त करते हैं।

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें दिए गए सरणी के योग की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स अप्रोच का अनुसरण कर सकते हैं, यानी एक सूची को पार करना और प्रत्येक तत्व को एक खा

  1. एक सरणी में सबसे बड़ा तत्व खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें सरणी में सबसे बड़ा तत्व खोजने की जरूरत है। दृष्टिकोण हम अधिकतम को पहले तत्व के रूप में प्रारंभ करते हैं। इसके बाद, हम दिए गए सरणी को दूसरे तत्व से अ