28、買股票的最佳時間
阿新 • • 發佈:2018-11-16
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。
注意你不能在買入股票前賣出股票。
首先想到的是兩層迴圈,但是很明顯不是最優的解,因此考慮比較好的演算法
class Solution { public int maxProfit(int[] prices) { int max = 0; for(int i = 0; i < prices.length-1; i++){ for (int j = i+1; j < prices.length; j++) { if(prices[j]- prices[i] > max){ max = prices[j]- prices[i]; } } } return max; } }
排名較高的程式碼,也比較好懂,比上面的程式碼複雜度低很多啊
class Solution { public int maxProfit(int[] prices) { if(prices==null||prices.length==0){ return 0; } int min = prices[0]; int result = 0; for(int i=0;i<prices.length;i++) { if(prices[i] < min ){ min =prices[i]; }else if(prices[i] - min > result){ result = prices[i] - min ; } } return result; } }