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

सबलिस्ट का सबसे बड़ा औसत खोजने का कार्यक्रम जिसका आकार कम से कम k पायथन में है

मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और दूसरा मान k है, हमें सूची के किसी भी उप-सूची का सबसे बड़ा औसत मान ज्ञात करना है जिसकी लंबाई कम से कम k है।

इसलिए, यदि इनपुट nums =[2, 10, -50, 4, 6, 6] k =3 जैसा है, तो आउटपुट 5.33333333 होगा, क्योंकि सबलिस्ट [4, 6, 6] का औसत मान सबसे बड़ा है

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

  • बाएँ:=न्यूनतम अंक, दाएँ:=अधिकतम अंक

  • s :=सूचकांक 0 से k - 1 तक की सभी संख्याओं का योग

  • सबसे बड़ा_औसत :=एस / के

  • जबकि बाएं <=दाएं, करें

    • मध्य :=(बाएं + दाएं) का पूर्णांक / 2

    • sum1 :=s, औसत :=s / k, sum2 :=0, cnt :=0

    • k से लेकर अंकों के आकार की श्रेणी में i के लिए, करें

      • sum1 :=sum1 + nums[i]

      • sum2 :=sum2 + nums[i − k]

      • सीएनटी:=सीएनटी + 1

      • औसत :=अधिकतम औसत और (sum1 /(cnt + k))

      • अगर sum2 / cnt <=मध्य, तो

        • sum1 :=sum1 - sum2

        • सीएनटी:=0, योग2:=0

      • औसत :=अधिकतम औसत और (sum1 /(cnt + k))

    • सबसे बड़ा_औसत :=अधिकतम सबसे बड़ा_औसत और औसत

    • अगर औसत> मध्य, तो

      • बायां :=मध्य + 1

    • अन्यथा,

      • दाएं :=मध्य - 1

  • सबसे बड़ा_एवीजी लौटाएं

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

उदाहरण

class Solution:
   def solve(self, nums, k):
      left, right = min(nums), max(nums)
      s = sum(nums[:k])
      largest_avg = s / k
      while left <= right:
         mid = (left + right) // 2
         sum1 = s
         avg = s / k
         sum2 = 0
         cnt = 0
         for i in range(k, len(nums)):
            sum1 += nums[i]
            sum2 += nums[i − k]
            cnt += 1
            avg = max(avg, sum1 / (cnt + k))
            if sum2 / cnt <= mid:
               sum1 −= sum2
               cnt = 0
               sum2 = 0
            avg = max(avg, sum1 / (cnt + k))
         largest_avg = max(largest_avg, avg)
         if avg > mid:
            left = mid + 1
         else:
            right = mid − 1
      return largest_avg
ob = Solution()
nums = [2, 10, −50, 4, 6, 6]
k = 3
print(ob.solve(nums, k))

इनपुट

[2, 10, −50, 4, 6, 6], k = 3

आउटपुट

5.333333333333333

  1. पायथन में डेटाबेस में पूरी तरह से स्टोर करने के लिए लॉग को छोटा करने के लिए सबसे बड़ा आकार खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे लॉग कहा जाता है और एक अन्य मूल्य सीमा है। लॉग में प्रत्येक तत्व [i] i-वें उपयोगकर्ता द्वारा उत्पन्न लॉग के आकार का प्रतिनिधित्व करता है। और सीमा लॉग के कुल आकार का प्रतिनिधित्व करती है जिसे हम अपने डेटाबेस में स्टोर कर सकते हैं। हमें सबसे बड़ा x ऐसे

  1. ग्राफ़ में सबसे बड़े गुट के न्यूनतम आकार का पता लगाने का कार्यक्रम (पायथन)

    मान लीजिए कि हमें एक ग्राफ दिया गया है और ग्राफ में सबसे बड़े समूह का न्यूनतम आकार ज्ञात करने के लिए कहा गया है। ग्राफ़ का एक समूह एक ग्राफ़ का एक उपसमुच्चय होता है, जहाँ प्रत्येक शीर्ष जोड़े आसन्न होते हैं, अर्थात प्रत्येक जोड़े के बीच एक किनारा मौजूद होता है। एक ग्राफ में सबसे बड़ा गुट ढूँढना बहुप

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

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