题解 | #买卖股票的最好时机(一)#
买卖股票的最好时机(一)
http://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec
C语言求解买卖股票的最好时机(一)
- 解题思路: 使用贪心算法,不妨设对于 8 9 4 5 2 7 1 ,遍历的过程中维护两个变量:一个是最低的购入价格,另一个是当前出售的利润最大值。假设第n天出售了股票,那么一定是在1~n-1之间的最低值买入的。dp[i] = a[i] - min_buy。因此使用一个变量不断记录最低的购入价格。
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param prices int整型一维数组
* @param pricesLen int prices数组长度
* @return int整型
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
int maxProfit(int* prices, int pricesLen ) {
// write code here
if(pricesLen<=1)
return 0;
int min_buy=prices[0];//初始化最小买入价格
int max_sale=0;
for(int i=1;i<pricesLen;i++){
//第i天出售:判断利润是否大于 max_sale
if(prices[i]-min_buy>max_sale)
max_sale=prices[i]-min_buy;
//第i天是否是最低的买入价格,如果刷新最低值 之后沿用这个值
if(prices[i]<min_buy)
min_buy=prices[i];
}
//返回最大利润
return max_sale;
}