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

Pythonで利益を保持および販売することで得られる最大の利益を見つけるためのプログラム


会社の株価を時系列で表すnumsという数字のリストがあるとします。 1日あたり最大1株の株式を購入できますが、複数の株式を保有し、任意の日数で株式を売却することができます。獲得できる最大の利益を返します。

したがって、入力がnums =[3、4、7、3、5]の場合、3と4で株を購入し、7で売ることができるため、出力は9になります。 5で売る。総利益(7-3)+(7-4)+(5-3)=9。

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

  • ans:=0
  • numsが空でない間は、
    • top:=numsから最後の要素を削除
    • numsが空ではなく、numsの最後の要素である場合は、
      • ans:=ans +(top-numsの最後の要素)
      • numsから最後の要素を削除する
  • 回答を返す

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

def solve(nums):
   ans = 0
   while nums:
      top = nums.pop()
      while nums and top > nums[-1]:
         ans += top - nums.pop()

   return ans

nums = [3, 4, 7, 3, 5]
print(solve(nums))

入力

[3, 4, 7, 3, 5]

出力

9

  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. 作成できる文字列の数を見つけるプログラム。ここで、「a」は「a」または「b」であり、「b」はPythonでは「b」のままです。

    「a」と「b」だけの文字列sがあるとします。 「a」は「a」のままにすることも「b」に変えることもできますが、「b」を変更することはできません。作成できる一意の文字列の数を見つける必要があります。 したがって、入力がs =baabのような場合、これらの文字列を作成できるため、出力は4になります-[baab、 babb、 bbab、 bbbb] これを解決するには、次の手順に従います- counts:=sの「a」の頻度 2^カウントを返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution:    def solve(self, s