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

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


मान लीजिए हमारे पास एक सरणी है जिसके लिए iवां तत्व दिन i पर दिए गए स्टॉक की कीमत दर्शाता है। हमें अधिकतम लाभ खोजने के लिए एक एल्गोरिदम तैयार करना है। हम अधिकतम दो लेनदेन पूरे कर सकते हैं। इसलिए यदि दी गई कीमतें [3,3,5,0,1,3,1,4] हैं, तो परिणाम 6 होगा, क्योंकि हम दिन 4 पर खरीदेंगे (कीमत 0), फिर दिन 6 पर बेचेंगे (कीमत 3), तो लाभ 3 - 0 = 3 है। अब दिन 7 पर खरीदें (कीमत 1), और दिन 8 पर बेचें (कीमत 4) तो लाभ 4 - 1 = 3 है।

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

  • n := s का आकार, m := t का आकार। s और t को उनसे पहले खाली स्थान जोड़कर अपडेट करें

  • आकार (n + 1) x (m + 1) का एक मैट्रिक्स बनाएं

  • dp[0, 0] := 1 सेट करें, फिर सभी पंक्तियों के 0वें कॉलम के लिए 1 सेट करें

  • i के लिए range 1 से n तक

    • j के लिए range 1 से m तक

      • यदि s[i] = t[j], तो

        • dp[i, j] := dp[i - 1, j - 1]

      • dp[i, j] := dp[i, j] + dp[i - 1, j]

  • dp[n, m] लौटाएं

उदाहरण

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

class Solution(object): def maxProfit(self, p): if not p: return 0 n = len(p) dp = [0 for i in range(n)] ans = 0 xmin = p[0] for i in range(1,n): xmin = min(xmin,p[i]) dp[i] = max(dp[i],p[i]-xmin) ans = max(ans,dp[i]) xmax = [0 for i in range(n)] xmax[-1] =p[-1] tempp = 0 for i in range(n-2,-1,-1): xmax[i] = max(xmax[i+1],p[i]) xmin = [p[-1],n] for i in range(n-2,-1,-1): tempp = max(tempp,xmax[i+1]-p[i+1]) ans = max(ans,dp[i]+tempp) return ans ob = Solution() print(ob.maxProfit([3,3,5,0,1,3,1,4]))

इनपुट

[3,3,5,0,1,3,1,4]

आउटपुट

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 अभी भी नौकरी, आवश्यक वस्तुएं, आवास, सामुदायिक सेवा और बहुत कुछ खोजने के लिए सबसे अच्छा विकल्प है, बस एक क्लिक दूर। फिर भी वही पु