Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最大2回株式を売買した後に最大の利益を見つけるプログラム


価格と呼ばれる数値のリストがあり、それが会社の株価を時系列で表しているとすると、その株式を最大2回売買することで得られる最大の利益を見つける必要があります。最初に購入してから販売する必要があります。

したがって、入力がprices =[2、6、3、4、2、9]の場合、出力は11になります。これは、価格2で購入し、次に6で販売し、再び2で購入して販売できるためです。 9時。

これを解決するには、次の手順に従います-

  • first_buy:=-inf、first_sell:=-inf
  • second_buy:=-inf、second_sell:=-inf
  • 価格のピクセルごとに、
    • first_buy:=first_buyと-pxの最大値
    • first_sell:=first_sellと(first_buy + px)の最大値
    • second_buy:=second_buyと(first_sell --px)の最大値
    • second_sell:=second_sellと(second_buy + px)の最大値
  • 最大値0、first_sellおよびsecond_sellを返します

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, prices):
      first_buy = first_sell = float("-inf")
      second_buy = second_sell = float("-inf")
      for px in prices:
         first_buy = max(first_buy, -px)
         first_sell = max(first_sell, first_buy + px)
         second_buy = max(second_buy, first_sell - px)
         second_sell = max(second_sell, second_buy + px)
      return max(0, first_sell, second_sell)

ob = Solution()
prices = [2, 6, 3, 4, 2, 9]
print(ob.solve(prices))

入力

[2, 6, 3, 4, 2, 9]

出力

11

  1. Pythonで一度株式市場で購入することで得られる最大の利益を見つけるためのプログラム

    会社の株価を時系列で表す価格のリストがあるとすると、その株を1回だけ売買することで得られる最大の利益を見つける必要があります。販売する前に購入する必要があることを覚えておく必要があります。 したがって、入力が価格=[10、12、9、6、8、12]の場合、出力は6になります。これは、6で購入し、12で販売できるためです。 これを解決するには、次の手順に従います- max_profit:=0 min_stock:=無限大 価格の各価格について、 max_profit:=max_profitの最大値と(price --min_stock) min_stock:=min_stockと価

  2. リスト内の最大要素と最小要素の位置を見つけるPythonプログラム?

    Pythonでは、最大要素、最小要素、およびそれらの位置も非常に簡単に見つけることができます。 Pythonはさまざまな組み込み関数を提供します。 min()は配列の最小値を見つけるために使用され、max()は配列の最大値を見つけるために使用されます。 index()は、要素のインデックスを見つけるために使用されます。 アルゴリズム maxminposition(A, n) /* A is a user input list and n is the size of the list.*/ Step 1: use inbuilt function for finding the positi