题解 | #买卖股票的最好时机(二),dp#
买卖股票的最好时机(二)
http://www.nowcoder.com/practice/9e5e3c2603064829b0a0bbfca10594e9
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算最大收益 * @param prices int整型一维数组 股票每一天的价格 * @return int整型 */ //[8,9,2,5,4,7,1] public int maxProfit (int[] prices) { if(prices == null || prices.length < 2) return 0 ; int len = prices.length ; //f[i]为前i天的最大利益 int f[] = new int[len +1] ; f[0] = 0 ; f[1] = 0 ; for(int i = 2 ; i <= len ; i ++) { if(prices[i-1] < prices[i-2]) { f[i] = f[i-1] ; } else { int j = i - 3 ; while(j >= 0) { if(prices[j] < prices[j+1]) { j -- ; } else { f[i] = f[j+1] + prices[i-1] - prices[j+1] ; break ; } } if(j < 0) { f[i] = prices[i-1] - prices[0] ; } } } return f[len] ; } }
一个菜鸟的算法刷题记录 文章被收录于专栏
分享一个菜鸟的成长记录