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

पायथन में स्टॉक खरीदने और बेचने का सर्वोत्तम समय


मान लीजिए हमारे पास एक सरणी A है, यहां A[i] दिन i पर दिए गए स्टॉक की कीमत दर्शाता है। हमें अधिकतम लाभ ढूंढना है। हम अधिकतम एक लेनदेन पूरा कर सकते हैं। (लेनदेन का मतलब स्टॉक खरीदना और बेचना है)। लेकिन हमें ध्यान रखना होगा कि हम एक ही समय में कई लेनदेन में संलग्न नहीं हो सकते। इसलिए हमें नया खरीदने से पहले स्टॉक बेचना होगा।

मान लीजिए सरणी A = [7, 1, 5, 3, 6, 4] जैसी है, तो परिणाम 5 होगा। जैसा कि हम देख सकते हैं, यदि हम दिन 2 (इंडेक्स 1) पर खरीदते हैं, तो यह 1 को खरीद मूल्य के रूप में लेगा। फिर यदि हम दिन 5 पर बेचते हैं, तो लाभ 6 - 1 = 5 होगा।

हल करने के चरण

  • A के समान आकार के दो सरणी leftMin, और rightMax बनाएं, और उन्हें 0 से भरें
  • leftMin[0] = A[0]
  • i को 1 से A की लंबाई - 1 तक रेंज में लिए, leftMin[i] = leftMin[i - 1] और A[i] का न्यूनतम
  • rightMax[n-1] = A[n - 1]
  • i को A की लंबाई - 1 से 1 तक नीचे रेंज में लिए, rightMax[i] = rightMax[i + 1] और A[i] का अधिकतम
  • answer := 0 सेट करें
  • i को 0 से A की लंबाई - 1 तक रेंज में लिए, answer := answer और rightMax[i + 1] - leftMin[i] का अधिकतम
  • answer वापस करें

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

उदाहरण

class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        if not prices:
            return 0
        leftMin,rightMax = [0 for i in range(len(prices))],[0 for i in range(len(prices))]
        leftMin[0] = prices[0]
        for i in range(1,len(prices)):
            leftMin[i] = min(leftMin[i-1],prices[i])
        rightMax[-1]= prices[-1]
        for i in range(len(prices)-2,-1,-1):
            rightMax[i] = max(rightMax[i+1],prices[i])
        ans = 0
        for i in range(len(prices)-1):
            ans = max(ans,rightMax[i+1]-leftMin[i])
        return ans

ob1 = Solution()
print(ob1.maxProfit([7,2,5,8,6,3,1,4,5,4,7]))

इनपुट

prices = [7,2,5,8,6,3,1,4,5,4,7]

आउटपुट

6

  1. Python में BST का माध्यिका O(n) समय और O(1) स्थान में ढूंढना Python में BST का माध्यिका O(n) समय और O(1) स्थान में ढूंढना

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री (BST) है, हमें उसका माध्यिका ढूंढना है। हम जानते हैं कि सम संख्या में नोड्स के लिए, माध्यिका = ((n/2वां नोड + (n+1)/2वां नोड) / 2। विषम संख्या में नोड्स के लिए, माध्यिका = (n+1)/2वां नोड। तो, यदि इनपुट इस तरह है तो आउटपुट 7 होगा। इसे हल करने के लिए, हम इन चरण

  1. Python में वेक्टोराइज़ेशन Python में वेक्टोराइज़ेशन

    इस लेख में, हम वेक्टोराइज़ेशन और Python 3.x या उससे पहले के संस्करणों में कार्यान्वयन में शामिल विभिन्न तकनीकों के बारे में सीखेंगे।वेक्टोराइज़ेशन क्या है?वेक्टोराइज़ेशन लूप के उपयोग के बिना सरणियों को लागू करने की एक तकनीक है। एक फ़ंक्शन का उपयोग करने से कोड के रनिंग टाइम और एक्ज़ीक्यूशन टाइम को कु

  1. 2024 में खरीदारी और बिक्री के लिए शीर्ष 10 विश्वसनीय Craigslist विकल्प 2024 में खरीदारी और बिक्री के लिए शीर्ष 10 विश्वसनीय Craigslist विकल्प

    Craigslist द्वारा अपने प्लेटफॉर्म से पर्सनल विज्ञापन सेक्शन हटाने के बाद भी अन्य विज्ञापनों के लिए खुले रहने के कारण, Craigslist जैसी वेबसाइट्स की भारी मांग है। Craigslist अभी भी नौकरी, आवश्यक वस्तुएं, आवास, सामुदायिक सेवा और बहुत कुछ खोजने के लिए सबसे अच्छा विकल्प है, बस एक क्लिक दूर। फिर भी वही पु