Pythonで株式を売買するのに最適な時期
配列Aがあるとします。ここで、A[i]はi日目の特定の株式の価格を示しています。最大の利益を見つけなければなりません。最大で1つのトランザクションを完了できます。 (取引とは、株式を売買することを意味します)。ただし、同時に複数の取引を行うことはできませんのでご注意ください。そのため、新しい株を購入する前に株を売る必要があります。
配列がA=[7、1、5、3、6、4]のようであるとすると、結果は5になります。ご覧のとおり、2日目(インデックス1)に購入すると、1は次のようになります。購入価格。次に、5日目に販売すると、利益は6 – 1=5になります。
これを解決するには、次の手順に従います-
- Aと同じサイズの2つの配列leftMinとrightMaxを作成し、それらを0で埋めます
- leftMin [0] =A [0]
- 範囲1からA– 1の長さのiの場合、leftMin [i] =leftMin [i –1]とA[i]の最小値
- rightMax [n-1] =A [n – 1]
- A – 1から1までの範囲のiの場合、rightMax [i] =rightMax [i+1]およびA[i]の最大値
- 答えを設定:=0
- 範囲0からA– 1の長さのiの場合、回答:=回答の最大値およびrightMax [i + 1] – leftMin [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
-
Pythonでのベクトル化
この記事では、Python3.xを使用した実装に関連するベクトル化とさまざまな手法について学習します。またはそれ以前。 ベクトル化とは何ですか? ベクトル化は、ループを使用せずに配列を実装する手法です。代わりに関数を使用すると、コードの実行時間と実行時間を効率的に最小化するのに役立ちます。さまざまな演算が、ベクトルの内積などの配列ではなく、ベクトルに対して実行されています。これは、単一の出力を生成するため、スカラー積とも呼ばれます。外部積は、ベクトルの(長さXの長さ)に等しい次元の二乗行列になります。要素同じインデックスの要素と行列の次元を積む賢明な乗算は変更されません。 内積/内積
-
2022 年に売買すべき Craigslist のような 10 のサイト
Craigslist のようなウェブサイトは、Craigslist がプラットフォームから個人広告セクションを削除し、他の広告を開いているため、大きな需要があります. Craigslist は、クリックするだけで、仕事、必要なアイテム、住宅、コミュニティ サービスなど、必要なものを見つけるのに最適な選択肢です。 それでも、同じ古いインターフェースと、個人的な関係に基づいて広告を見つけることができないため、人々は Craigslist の代替品を探すようになりました.これが、不足している懸念をおそらく解決する Craigslist のような最高のサイトを提供するためにここにいる理由です. A