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

पायथन में बाउंडेड ऐरे में दिए गए इंडेक्स पर अधिकतम मान खोजने का प्रोग्राम


मान लीजिए हमारे पास तीन मान n, index और maxSum हैं। एक ऐरे nums पर विचार करें हमें nums[index] ढूंढना है और nums निम्नलिखित शर्तों को पूरा करता है:

  • nums का आकार n है।
  • n में सभी तत्व पॉजिटिव हैं।
  • सभी i के लिए |nums[i] - nums[i+1]| <= 1, जहां 0 <= i < n-1।
  • nums के सभी तत्वों का योग maxSum से अधिक नहीं है।
  • nums[index] अधिकतम है।

उदाहरण के लिए, यदि इनपुट n = 6, index = 3, maxSum = 8 है, तो आउटपुट 2 होगा क्योंकि हम [1,2,2,2,1,1] जैसा ऐरे प्राप्त कर सकते हैं, जो सभी शर्तों को पूरा करता है, और यहां nums[3] अधिकतम है।

हल करने के चरण

  1. left := maxSum // n, right := maxSum + 1
  2. ans := 0
  3. left < right तक व्हाइल लूप चलाएं:
    • mid := left + (right - left) // 2
    • ind_l := (mid-1 + max(1, mid-index)) * min(index, mid-1) // 2 + abs(min(0, mid-index-1))
    • ind_r := (mid + max(1, mid-(n-index-1))) * min(n-index, mid) // 2 + abs(min(0, mid-(n-index-1)-1))
    • यदि ind_l + ind_r <= maxSum, तो ans := mid, left := mid + 1
    • अन्यथा, right := mid
  4. ans वापस करें।

उदाहरण

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

def solve(n, index, maxSum):
    left, right = maxSum // n, maxSum + 1
    ans = 0
    while left < right:
        mid = left + (right - left) // 2
        ind_l = (mid - 1 + max(1, mid - index)) * min(index, mid - 1) // 2 + abs(min(0, mid - index - 1))
        ind_r = (mid + max(1, mid - (n - index - 1))) * min(n - index, mid) // 2 + abs(min(0, mid - (n - index - 1) - 1))
        if ind_l + ind_r <= maxSum:
            ans = mid
            left = mid + 1
        else:
            right = mid
    return ans

n = 6
index = 3
maxSum = 8
print(solve(n, index, maxSum))

इनपुट

6, 3, 8

आउटपुट

2
  1. पायथन में दिए गए सरणी के किसी भी अनुक्रम का अधिकतम आकार खोजने का प्रोग्राम जहां हर जोड़ी अच्छी है पायथन में दिए गए सरणी के किसी भी अनुक्रम का अधिकतम आकार खोजने का प्रोग्राम जहां हर जोड़ी अच्छी है

    मान लीजिए हमारे पास आकार n का एक अनुक्रम nums है। हमें nums के उस सबसीक्वेंस का अधिकतम आकार खोजना है जिसमें हर जोड़ी (p, q) एक अच्छी जोड़ी है? एक जोड़ी को अच्छी जोड़ी कहा जाता है यदि और केवल यदि यह इनमें से कम से कम एक शर्त को पूरा करती है: 1. p के विशिष्ट अभाज्य भाजकों की संख्या की समता q के समान ह

  1. Python प्रोग्राम में ऐरे का योग खोजना Python प्रोग्राम में ऐरे का योग खोजना

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

  1. - Python प्रोग्राम से डिक्शनरी में दूसरी अधिकतम मान खोजना

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