股票的最大利潤

題目描述: 

假設把某股票的價格按照時間先後順序存儲在數組中,請問買賣 一次 該股票可能獲得的利潤是多少?

例如一隻股票在某些時間節點的價格爲[9, 11, 8, 5, 7, 12, 16, 14]。

如果我們能在價格爲5的時候買入並在價格爲16時賣出,則能收穫最大的利潤11。

樣例

輸入:[9, 11, 8, 5, 7, 12, 16, 14]

輸出:11

解法:

  1. 如果數組長度小於等於1,則利潤爲0;
  2. 先保存當前的最小值,然後從第二個元素開始遍歷,與最小值相比,是否產生更大的利潤,有則更新利潤的最大值,否則,最大利潤保持不變。然後更新當前的最小值,
  3. 循環遍歷下一個元素。
  4. 返回最大利潤值。
class Solution {
public:
    int maxDiff(vector<int>& nums) {
        if(nums.size()<=1)
            return 0;
        int minval = nums[0];
        int value = 0;
        for(int i=1; i<nums.size(); i++)
        {
            
            value = max(value, nums[i] - minval);
            minval = min(minval, nums[i]);
        }
        return value;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章