**题目:**你现在是一个买卖青蛙的 huster。每天的青蛙价格不一样,prices[i]代表青蛙在第 i 天的价 格,求只做一次交易(买入 1 只,卖出 1 只)能得到的最大收益(你必须先买了青蛙之后才能 卖青蛙)。
时间复杂度要求:O(n)
我的思路:先遍历找出最低售价即成本minprice;其次利润=卖出价格-成本,只有当成本最低且卖出价格最高时利润difference最高。
#include<stdio.h>
int maxIncome(int price[], int n)
{
int i, tempt;
int minprice=price[0], difference = 0;
//找出最低售价
for (i = 1; i < n; i++)
{
if (minprice > price[i])
{
minprice = price[i];
tempt = i;
}}
//找出利润最高
for (i = tempt+1; i < n; i++)
{
if (difference < price[i] - minprice)
{
difference = price[i] - minprice;
}}
return difference;
}
int main()
{
int price[] = { 4,5,1,2 };
int income;
income = maxIncome(price, 4);
printf("the highest income is %d\n", income);
return 0;
}