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

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

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

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

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

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

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

उदाहरण

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])
      #print(leftMin)
      rightMax[-1]= prices[-1]
      for i in range(len(prices)-2,-1,-1):
         rightMax[i] = max(rightMax[i+1],prices[i])
      #print(rightMax)
      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. पायथन में O(n) समय और O(1) स्थान में BST का माध्यिका ज्ञात कीजिए

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

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

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

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

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