面试的时候,死活在成功的边缘试探,没有成功写出来,遗憾! 一晚没有睡好,早起,刷题
  • 求最大差值, 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;
}