面试的时候,死活在成功的边缘试探,没有成功写出来,遗憾! 一晚没有睡好,早起,刷题
- 求最大差值, O(n)
- 遍历,维护最小值num_min
- 遍历,维护最大差值delta_max
- 遍历,当前值与最小值求差,tmp
- 差值tmp与delta_max比较,大于则更新最大值
- 注意初始化最小值的时候,就用第一个元素
- 初始化最大差值的时候,就按题目要求默认返回值
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param prices int整型一维数组
* @param pricesLen int prices数组长度
* @return int整型
*
* C语言声明定义全局变量请加上static,防止重复定义
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
int maxProfit(int* prices, int pricesLen ) {
// write code here
// 1. 遍历,维护最小值,即每次比较当前元素与最小值,小则更新最小值
// 2. 遍历,维护最大差值delta_max,
// 3. 遍历,当前元素与最小值求差,差值大于delat_max, 则更新,否则继续
int num_min = prices[0];
int delta_max = 0;
for (int i = 0; i < pricesLen; i ++)
{
if (prices[i] < num_min)
{
num_min = prices[i];
continue;
}
int tmp = prices[i] - num_min;
if (tmp > delta_max)
{
delta_max = tmp;
}
}
return delta_max;
}