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

पायथन में सकारात्मक गुणनफल वाले सबएरे की अधिकतम लंबाई खोजने का प्रोग्राम


मान लीजिए हमारे पास nums नामक एक सरणी है, हमें उस सबएरे की अधिकतम लंबाई ज्ञात करनी है जहां उसके सभी तत्वों का गुणनफल सकारात्मक हो। हमें सकारात्मक गुणनफल वाले सबएरे की अधिकतम लंबाई ज्ञात करनी है।

उदाहरण के लिए, यदि इनपुट है nums = [2,-2,-4,5,-3], तो आउटपुट 4 होगा क्योंकि पहले चार तत्व एक ऐसा सबएरे बनाते हैं जिसका गुणनफल सकारात्मक है।

समाधान दृष्टिकोण

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • एक फ़ंक्शन util() परिभाषित करें। यह s, e लेगा
  • neg := 0
  • ns := -1, ne := -1
  • i को s से e तक रेंज में लिए:
    • यदि nums[i] < 0, तो:
      • neg := neg + 1
      • यदि ns == -1, तो ns := i
      • ne := i
  • यदि neg सम है, तो:
    • e-s+1 लौटाएं
  • अन्यथा:
    • max(e-ns, ne-s) लौटाएं
  • मुख्य विधि से:
    • ans := 0
    • s := -1, e := -1
    • i को 0 से nums के आकार तक रेंज में लिए:
      • यदि nums[i] != 0 और s == -1, तो s := i
      • अन्यथा यदि nums[i] == 0 और s != -1, तो:
        • e := i-1
        • ans := max(ans, util(s, e))
        • s := -1, e := -1
    • यदि s != -1 और e == -1, तो:
      • e := nums का आकार - 1
      • ans := max(ans, util(s, e))
    • ans लौटाएं

उदाहरण

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

def util(s, e):
    neg = 0
    ns, ne = -1, -1
    for i in range(s, e+1):
        if nums[i] < 0:
            neg += 1
            if ns == -1:
                ns = i
            ne = i
    if neg == 0 or neg % 2 == 0:
        return e - s + 1
    else:
        return max(e - ns, ne - s)

def solve(nums):
    ans = 0
    s, e = -1, -1
    for i in range(len(nums)):
        if nums[i] != 0 and s == -1:
            s = i
        elif nums[i] == 0 and s != -1:
            e = i - 1
            ans = max(ans, util(s, e))
            s = -1
            e = -1
    if s != -1 and e == -1:
        e = len(nums) - 1
        ans = max(ans, util(s, e))
    return ans

nums = [2, -2, -4, 5, -3]
print(solve(nums))

इनपुट

[2,-2,-4,5,-3]

आउटपुट

4
  1. पायथन का उपयोग करके अधिकतम संभावना वाले पथ को खोजने का प्रोग्राम पायथन का उपयोग करके अधिकतम संभावना वाले पथ को खोजने का प्रोग्राम

    मान लीजिए हमारे पास n नोड्स वाला एक अनिर्देशित भारित ग्राफ है (नोड्स 0 से क्रमांकित हैं)। यह ग्राफ एज लिस्ट के रूप में दिया गया है, प्रत्येक एज e के लिए, उस एज को पार करने की सफलता की संभावना probability[e] है। हमारे पास प्रारंभ और अंत नोड्स भी हैं, हमें प्रारंभ से अंत तक जाने के लिए अधिकतम सफलता स

  1. - Python प्रोग्राम में N के चार गुणनखोजें जिनका अधिकतम गुणनफल और योग N के बराबर हो - सेट-2

    मान लीजिए हमारे पास एक संख्या N है, हमें N के सभी गुणनखोजने हैं और N के चार गुणनखोजने का गुणनफल वापस करना है जैसे कि: चार गुणनखोजने का योग N के समान है। चार गुणनखोजने का गुणनफल अधिकतम है। उत्पाद को अधिकतम करने के लिए सभी चार गुणनखोजने एक-दूसरे के बराबर हो सकते हैं। 1 2 3 4 5 6 10 12 15 20 30 60 और

  1. - पायथन में अधिकतम उत्पाद सबएरे

    मान लीजिए हमारे पास nums नामक एक पूर्णांक ऐरे है, हमें एक ऐरे के भीतर सन्निकट सबएरे (कम से कम एक संख्या युक्त) ढूंढना है जिसका सबसे बड़ा उत्पाद हो। इसलिए यदि ऐरे [2,3,-2,4] है, तो आउटपुट 6 होगा, क्योंकि सन्निकट सबएरे [2,3] का अधिकतम उत्पाद है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - max_li