[ Code Kata ] 🤯🥵 python#17株式取引で利益が最も大きい値は?float('inf')


質問する
priceは配列で、各要素は毎日の株価です.
一度しか取引できない=売買できるなら、最大の利益はいくらですか?
例えば、
  • Input: [7,1,5,3,6,4]
    Output: 5
    2日(価格=1)買い、5日(価格=6)買い、6-1が最大の収益
    7-1=6はだめだよね?先に買ってこそ売ることができる.
    Input: [7,6,4,3,1]
    Output: 0
    ここは毎日値下げしているので、取引はありません.だから0
    レベルがどんどん上がっていくCode Kata!
    次から次へと
    もちろん、プロジェクトのせいでコードを解く余裕は全くありません...
    価格をfor loopに変更して、状況ごとにどんな収益があるか見てみましょう.これは話に似ていますか.
    では.状況の数...36個ですか.そうですか?
    model solution
    def maxProfit(prices): 
      max_profit, min_price = 0, float('inf')
      
      for price in prices:
          min_price = min(min_price, price)
          profit = price - min_price
          max_profit = max(max_profit, profit)
          
      return max_profit
    やっぱり今日もfloat('inf')が何なのかわからない私…!
    最初はintを間違えたと思っていましたが、それが本当に正しいコードです.(衝撃)
    やはり世界は広く、コードが多い.
    float('inf')
    It acts as an unbounded upper value for comparison. This is useful for finding lowest values for something.
    for example, calculating path route costs when traversing trees.
    要するに、今のような問題の場合、値が最も少ない関数を見つけることができます!
    👉🏻 What is the point of float('inf')?
    オプションリストで最も安いパスを検索します:(私たちの質問と似ています)
    >>> lowest_path_cost = float('inf')
    >>> # pretend that these were calculated using some worthwhile algorithm
    >>> path_costs = [1, 100, 2000000000000, 50]
    >>> for path in path_costs:
    ...   if path < lowest_path_cost:
    ...     lowest_path_cost = path
    ...
    >>> lowest_path_cost
    1
    It acts as an unbounded upper value for comparison. This is useful for finding lowest values for something. for example, calculating path route costs when traversing trees.
    if you didn't have float('Inf') available to you, what value would you use for the initial lowest_path_cost? Would 9999999 be enough -- float('Inf') removes this guesswork.