股票的最大利潤

題目描述:

假設把某股票的價格按照時間先後順序存儲在數組中,請問買賣 一次 該股票可能獲得的利潤是多少?例如一隻股票在某些時間節點的價格爲[9, 11, 8, 5, 7, 12, 16, 14]。
如果我們能在價格爲5的時候買入並在價格爲16時賣出,則能收穫最大的利潤11。

樣例:

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

分析:

如果把股票的買入價和賣出價視爲一組數對,那麼最大利潤就是數組中所有數對的最大差值,要確保買入在賣出之前。
聲明一個變量min,保存購入的最低價格,當遍歷到第i個數字時,比較nums[i]和min的大小,如果nums[i]<min則令min=nums[i]
然後判斷當前利潤和max的大小如果max<當前利潤則更新max。

public int maxDiff(int[] nums) {
		if(nums==null||nums.length==0)
			return 0;
		int min=nums[0];
		int share=0;
		for(int i=1;i<nums.length;i++) {
			if(nums[i]<min)
				min=nums[i];
			int cs=nums[i]-min;
			if(cs>share)
				share=cs;
		}
        return share;
    }
發佈了124 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章