給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。設計一個算法來計算你所能獲取的最大利潤。你能夠儘量地完成更多的交易(屢次買賣一支股票)。注意:你不能同時參與多筆交易(你必須在再次購買前出售掉以前的股票)java
若是把數組想象成一個線性圖,那很天然的,最大利潤就是全部上坡之和,而造成上坡的條件就是後一個數要比前一個數大,回到本題。所以只要今天價格小於明天價格,就在今天買入而後明天賣出,利潤之和就是最大的算法
class Solution { public int maxProfit(int[] prices) { int ans = 0; for(int i = 1; i <= prices.length - 1; i++) { if(prices[i] > prices[i - 1]) { ans += prices[i] - prices[i - 1]; } } return ans; } }