第7章12行(株の購入と売却に最適なタイミング)
1239 ワード
1回の取引で生じる最大利益を計算する.
期待値が5の理由は1のときに6を買うと5の利益が最大になるからです.
最も簡単な方法は、ブルートフォスで売買を繰り返し、その中から最大の利益の値を抽出することです.
しかし、李芳植は一時停止で解除されることはない.別の方法が必要です.
現在の値を指すポインタが右に移動すると、以前の状態の低点から価格差を計算することができ、大きい場合は最大値を反復し続け、最大の収益を得ることができます.
期待値が5の理由は1のときに6を買うと5の利益が最大になるからです.
1.Brout Forceで計算
最も簡単な方法は、ブルートフォスで売買を繰り返し、その中から最大の利益の値を抽出することです.
from typing import List
class Solution:
def maxProfit(self, prices: List[int]) -> int:
max_price = 0
for i, price in enumerate(prices):
for j in range(i, len(prices)):
max_price = max(prices[j] - price, max_price)
return max_price
しかし、李芳植は一時停止で解除されることはない.別の方法が必要です.
2.低点と現在値の差を計算する
現在の値を指すポインタが右に移動すると、以前の状態の低点から価格差を計算することができ、大きい場合は最大値を反復し続け、最大の収益を得ることができます.
import sys
from typing import List
class Solution:
def maxProfit(self, prices: List[int]) -> int:
profit = 0
min_price = sys.maxsize
# 최소값과 최대값 계속 갱신
for price in prices:
min_price = min(min_price, price)
profit = max(profit, price - min_price)
return profit
Reference
この問題について(第7章12行(株の購入と売却に最適なタイミング)), 我々は、より多くの情報をここで見つけました https://velog.io/@dongmin/7장12-배열주식을-사고-팔기-가장-좋은-시점テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol