剑指 Offer 63. 股票的最大利润
链接
代码
暴力破解法
除了慢一点也没啥
//双循环暴力法
public int maxProfit(int[] prices)
{
int ret = 0;
for (int i = 0; i < prices.length - 1; i++)
{
for (int j = i + 1; j < prices.length - 1; j++)
{
if (ret < prices[j] - prices[i])
{
ret = prices[j] - prices[i];
}
}
}
return ret;
}
寻找最低点
遍历一遍找到股票价格最低的一天,将数据保存下来,然后在遍历过程中考虑如果我是在历史最低点买进的,那么我今天卖出能赚多少钱?当遍历完成,我们就得到了最大利润。
public int maxProfit(int[] prices)
{
int Min = Integer.MAX_VALUE;
int ret = 0;
//确定最小值
for (int price : prices)
{
if (Min > price)
{
Min = price;
} else //Min 必然小于等于 当前价格
{
if (ret < price - Min)
{
ret = price - Min;
}
}
}
return ret;
}