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

पायथन में स्टॉक III खरीदने और बेचने का सबसे अच्छा समय


मान लीजिए कि हमारे पास एक सरणी है जिसके लिए ith तत्व किसी दिए गए स्टॉक की कीमत को दिन 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 सेट करें, 1 डालें

  • मैं के लिए 1 से n की सीमा में

    • j के लिए 1 से m की सीमा में

      • अगर s[i] =t[j], तो

        • डीपी [आई, जे]:=डीपी [i - 1, जे - 1]

      • डीपी [i, j]:=dp [i, j] + dp [i – 1, j]

  • वापसी डीपी [एन, एम]

उदाहरण

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

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. पायथन में O(n) समय और O(1) स्थान में BST का माध्यिका ज्ञात कीजिए

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

  1. पायथन में वैश्वीकरण

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

  1. 10 साइटें जैसे क्रेगलिस्ट 2022 में खरीदने और बेचने के लिए

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