题目:
返回获取的最大利润:
这题可浪费时间了!!!
主要是暴力求解超时!!!
最后参考了一下答案
解题思路:
思路一:
暴力求解:两重for循环判断最大利润(超时)
VS代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int prices[]={7,6,4,3,1};
    int pricesSize=5;
    int prices_max=prices[1]-prices[0];
    for(int i=0;i<pricesSize;i++)
    {
        for(int j=0;j<i;j++)
        {
            if((prices[i]-prices[j])>prices_max)
            {
                prices_max=prices[i]-prices[j];
            }
        }
    }
    if(prices_max<0)
    {
       // return 0;
       prices_max=0;
    }
    //return prices_max;
    printf("%d\n",prices_max);
    return 0;
}
思路二:
1、定义最小值为999999(定大一点,小了在范围内会出现不跳转的情况导致出错,比十的四次方大就可以)定义最大值为0;
2、i从0到pricesSize(有效数字个数);
3、判断最大值与利润(当前遍历值-最小值)的大小,利润大于最大值,将利润赋值给最大值。
4、判断最小值与当前值的大小,最小遍历值小于当前值,将当前遍历值赋给最小值。
5、返回最大值。
Vs代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int prices[]={7,1,5,3,6,4};
    int pricesSize=6;
    int prices_max=0;
    int prices_min=9999;
    for(int i=0;i<pricesSize;i++)
    {
        prices_max=prices_max<(prices[i]-prices_min)?(prices[i]-prices_min):prices_max;
        prices_min=prices_min>prices[i]?prices[i]:prices_min;
    }
    printf("%d\n",prices_max);
    return 0;
}
最终通过代码:
int maxProfit(int* prices, int pricesSize) {
    int prices_min=10001,prices_max=0;
    for(int i=0;i<pricesSize;i++)
    {
        prices_max=prices_max<(prices[i]-prices_min)?(prices[i]-prices_min):prices_max;
        prices_min=prices_min>prices[i]?prices[i]:prices_min;
    }
    return prices_max;
}再接再励吧!!!!!!!
脑袋空空。
如果有更好的方案,请赐教,感谢!









