株式配列を売買する最初の、最高の時間---

i番目の要素が与えられた株式のi日の価格である配列を、与えられました。

あなただけあなたが得ることができる最大の利益を計算するアルゴリズムを設計するために、(つまり、株式を売買する)トランザクションを完了するまで許可されている場合。

あなたが株式を購入する前に株式を売却することはできません。

例1:

入力:[7,1,5,3,6,4]
出力:5
説明:2日目(= 1つの株価)、売り切れの際は、5日目(株価= 6)に、購入します、最大の利益= 6-1 = 5。
販売価格は購入価格よりも大きくなければならないので、利益は、7-1 = 6ではないことに注意してください。
例2:

入力:[7,6,4,3,1]
出力:0を
説明する。この場合、トランザクションが完了していない、最大の利益はゼロです。

 

方法a:2つのトラバース

時間と空間の消費量!

1  クラスソリューション{
 2  公共3      INT maxProfit(ベクトル< INT >&価格){
 4          INT MAX_VALUE = 0 5          int型のres;
6          場合(prices.size()<= 1戻り 0 ;
7          のためのint型 I = prices.size() - 1 ; iが> = 0 ; i-- ){
 8              のためのINT J = I- 1、J> = 0 ; j-- ){
 9                 RES =価格[I] - 価格[J]。
10                  であれば(RES> MAX_VALUE)MAX_VALUE =のRES。 
11              }
 12          }
 13          リターンMAX_VALUE。
14      }
 15 }。

 

方法2:配列中に、最大シーク

1  クラスソリューション{
 2  公共3      INT maxProfit(ベクトル< INT >&価格){
 4          ベクトル< INT > トレンド。
5          あれば(prices.size()< 2 6          {
 7              戻り 0 ;
8          }
 9          のためのint型 I = 0 - ; iがprices.size()< 1 ; iが++ 10          {
 11              trend.push_back(価格[I + 1] -価格[I]);   // ストック構成アレイの毎日の株価の浮き沈み
12である         }
 13は、         
14          のint SUM = 0 ;
 15          int型の最大=トレンド[ 0 ];
 16          INT I = 0 ;私はトレンド<サイズ(); Iは++)          // 最大変化サブアレイアレイと計算
17。         {
 18は              SUM => SUM 0 SUM +?トレンド[I]:トレンド[I];
 19。              最大=最大> SUMの?最大:SUM、
 20であります         }
 21は、          最大=最大< 00:最大;
22          リターン最大。
23      }
 24 }。

 

おすすめ

転載: www.cnblogs.com/pacino12134/p/10991516.html