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

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

स्टॉक की कीमतों की सूची prices और प्रति बिक्री लेनदेन शुल्क fee दिया गया है। किसी भी संख्या में लेनदेन करके अधिकतम लाभ ढूंढें। खरीदने से पहले बेचना जरूरी है।

उदाहरण

इनपुट: prices = [2, 10, 4, 8], fee = 3

आउटपुट: 6

लेनदेन: 2 पर खरीदें, 10 पर बेचें (लाभ 5), 4 पर खरीदें, 8 पर बेचें (लाभ 1), कुल = 6।

एल्गोरिदम (पुनरावर्ती + मेमोइज़ेशन / DP)

दो अवस्थाएं: flag=0 (स्टॉक नहीं है, खरीद सकते हैं), flag=1 (स्टॉक है, बेच सकते हैं)।

  • recur(i, 0) = max(recur(i+1, 1) - prices[i], recur(i+1, 0))
  • recur(i, 1) = max(recur(i+1, 1), recur(i+1, 0) + prices[i] - fee)
  • आधार मामला: i == n → 0 वापस करें।

पायथन कार्यान्वयन (पुनरावर्ती)

class Solution:
    def solve(self, prices, fee):
        n = len(prices)
        from functools import lru_cache
        
        @lru_cache(None)
        def recur(i, holding):
            if i == n:
                return 0
            if not holding:
                # खरीदें या छोड़ें
                return max(recur(i + 1, True) - prices[i], recur(i + 1, False))
            else:
                # बेचें या रखें
                return max(recur(i + 1, True), recur(i + 1, False) + prices[i] - fee)
        
        return recur(0, False)

# परीक्षण
ob = Solution()
print(ob.solve([2, 10, 4, 8], 3))  # 6

इटरेटिव DP (O(1) स्थान)


def solve_iterative(prices, fee):
    cash = 0           # स्टॉक नहीं है
    hold = -prices[0]  # स्टॉक खरीदा हुआ
    for price in prices[1:]:
        cash = max(cash, hold + price - fee)
        hold = max(hold, cash - price)
    return cash

समय जटिलता

  • पुनरावर्ती (मेमो के साथ): O(n) समय, O(n) स्थान।
  • इटरेटिव: O(n) समय, O(1) स्थान।
  1. - पायथन में स्टॉक मार्केट में कई बार खरीद-बिक्री करके प्राप्त अधिकतम लाभ खोजने का प्रोग्राम

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

  1. - पायथन में स्टॉक मार्केट में एक बार खरीद-बिक्री करके प्राप्त अधिकतम लाभ खोजने का प्रोग्राम

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

  1. - पायथन में अधिकतम बिटवाइज AND और बिटवाइज OR वाले सबसीक्वेंस खोजें

    मान लीजिए हमारे पास n तत्वों का एक ऐरे है, हमें ऐरे के दो सबसीक्वेंस चुनकर अधिकतम योग दिखाना है (वे भिन्न हो सकते हैं या नहीं) ताकि पहले सबसीक्वेंस के सभी तत्वों के बिटवाइज AND ऑपरेशन और दूसरे सबसीक्वेंस के सभी तत्वों के बिटवाइज OR ऑपरेशन का योग अधिकतम हो।तो, यदि इनपुट A = {4, 6, 7, 2} जैसा है, तो आ