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

पायथन में कूलडाउन के साथ स्टॉक खरीद-बिक्री से अधिकतम लाभ का प्रोग्राम

स्टॉक की कीमतों की सूची prices दी गई है। अधिकतम लाभ ढूंढें जहां आप खरीदने से पहले बेच नहीं सकते, और बेचने के बाद अगले दिन खरीद नहीं सकते (1 दिन का कूलडाउन)।

उदाहरण

इनपुट: prices = [2, 6, 9, 4, 11]

आउटपुट: 11

लेनदेन: 2 पर खरीदें, 6 पर बेचें (लाभ 4), दिन 2 कूलडाउन, 4 पर खरीदें, 11 पर बेचें (लाभ 7), कुल = 11।

एल्गोरिदम (स्टेट मशीन DP)

दो अवस्था चर बनाए रखें:

  • s (sold/कैश): स्टॉक नहीं है, खरीद सकते हैं।
  • b (buy/होल्ड): स्टॉक है, बेच सकते हैं।

प्रत्येक दिन price के लिए:


temp = b
b = max(b, s - price)      # खरीदें या रखें
if i > 0:
    s = max(s, temp + prices[i-1])  # बेचें या रखें (कूलडाउन के कारण i-1)

अंत में max(s, b + prices[-1]) वापस करें।

पायथन कार्यान्वयन

class Solution:
    def solve(self, prices):
        s = 0
        b = float("-inf")
        for i, price in enumerate(prices):
            temp = b
            b = max(b, s - price)
            if i:
                s = max(s, temp + prices[i - 1])
        return max(s, b + prices[-1])

# परीक्षण
ob = Solution()
print(ob.solve([2, 6, 9, 4, 11]))  # 11
print(ob.solve([1, 2, 3, 0, 2]))   # 3

स्पष्टीकरण

  • b = स्टॉक रखने पर अधिकतम लाभ (खरीदने के बाद)।
  • s = स्टॉक न रखने पर अधिकतम लाभ (बेचने के बाद, कूलडाउन समाप्त)।
  • बेचते समय prices[i-1] का उपयोग कूलडाउन को लागू करता है: आज बेचा → कल नहीं खरीद सकते।

समय जटिलता

  • O(n) समय, O(1) स्थान।
  • सामान्य DP (3 अवस्थाएं: होल्ड, कूलडाउन, फ्री) का अनुकूलित संस्करण।
  1. - पायथन में स्टॉक मार्केट में एक बार खरीद-बिक्री करके प्राप्त अधिकतम लाभ खोजने का प्रोग्राम

    मान लीजिए हमारे पास prices नामक सूची है जो किसी कंपनी के स्टॉक की कीमतों को कालानुक्रमिक क्रम में दर्शाती है। हमें उस अधिकतम लाभ को ढूंढना है जो हम उस स्टॉक को केवल एक बार खरीद और बेचकर कमा सकते थे। हमें ध्यान रखना होगा कि हम बेचने से पहले खरीदना होगा। उदाहरण के लिए, यदि इनपुट है prices = [10, 12,

  1. - पायथन में उन स्ट्रिंग्स की संख्या खोजें जहां 'a' 'a' या 'b' हो सकता है, और 'b' 'b' ही रहता है

    मान लीजिए हमारे पास केवल a और b वाली एक स्ट्रिंग s है। a a रह सकते हैं या b में बदल सकते हैं, लेकिन b को बदला नहीं जा सकता। हमें उन अद्वितीय स्ट्रिंग्स की संख्या ढूंढनी है जो हम बना सकते हैं। उदाहरण के लिए, यदि इनपुट है s = baab, तो आउटपुट होगा 4, क्योंकि हम ये स्ट्रिंग्स बना सकते हैं: [baab, babb,

  1. - सूची में अधिकतम और न्यूनतम तत्व की स्थिति खोजने का पायथन प्रोग्राम

    समस्या विवरण पायथन में अधिकतम, न्यूनतम तत्व और उनकी स्थिति खोजना बहुत आसान है। पायथन विभिन्न इनबिल्ट फंक्शन प्रदान करता है। min() सरणी में न्यूनतम मान खोजने के लिए उपयोग किया जाता है, max() अधिकतम मान खोजने के लिए उपयोग किया जाता है। index() तत्व के इंडेक्स खोजने के लिए उपयोग किया जाता है। एल्गोरिद