1. 程式人生 > >股票的最大利潤

股票的最大利潤

最大 利潤 data ould 賣出 定時 存儲 stat ret

題目:

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

例如:一只股票在某些時間節點的價格是{9,11,8,5,7,12,16,14}。

如果我們能在價格為5的時候買入並在價格16的時賣出,則能獲得最大的利潤。

思路:

我們定義函數diff(i)為當賣出價格為數組中第i個數字時可能獲得的最大利潤。顯然,在賣出價格固定時,買入價越低獲得的利潤最大。也就是說,如果掃描到數組中第i個數字時,只要我們能夠記住之前i-1個數字中的最小值,就能算出當前價位賣出時,可能獲得的最大利潤。

 1 public class Solution {
 2 
 3     public
int maxDiff(int[] numbers) { 4 if(numbers == null && numbers.length) { 5 return 0; 6 } 7 8 int min = numbers[0]; 9 int maxDiff = numbers[1]-numbers[0]; 10 11 for(int i = 2; i < numbers.length; i++) { 12 13 // you should know here numbers[i-1]
14 if(numbers[i-1] < min) { 15 min = numbers[i-1]; 16 } 17 18 int currentDiff = numbers[i] - min; 19 20 if(currentDiff > maxDiff) { 21 maxDiff = currentDiff; 22 } 23 } 24 25 return maxDiff;
26 } 27 28 29 public static void main(String[] args) { 30 Solution s = new Solution(); 31 int[] data = {9,11,8,5,7,12,16,14}; 32 33 System.out.println(s.maxDiff(data)); 34 } 35 }

股票的最大利潤