考研数据结构——买卖青蛙

你现在是一个买卖青蛙的 huster。每天的青蛙价格不一样,prices[i]代表青蛙在第 i 天的价格,求只做一次交易(买入 1 只,卖出 1 只)能得到的最大收益(你必须先买了青蛙之后才能 卖青蛙)。 

时间复杂度要求:O(n) 

函数:int maxIncome(int prices[ ],int n)


解析:

#include <stdio.h>

#include <stdlib.h>


/*
假设第一天的价格最低,最后一天的价格最高, 分别从数组的头(i)尾(j)两端遍历,
满足i<j时,当有低于当前最低价格时,更新min,当有高于当前最高价时,更新max
最后得出最高利润 
 
*/ 


int maxIncome(int price[],int n)  //price[i]存放每天的价格,n表示天数 
{
int max,min,i,j,profit;
max=price[n-1];
min=price[0];
i=0;j=n-1;profit=0;

while(i<j)
{
if(price[i+1]<price[i])
{
min=price[i+1];


if(price[j-1]>price[j])
{
max=price[j-1];
}
i++;
j--;  
}
profit=max-min;
return profit;
}


int main() {

int price[1024],i,n,pro;
printf("请输入天数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d天青蛙的价格:\n",i+1);
scanf("%d",&price[i]);
}
pro=maxIncome(price,n);
printf("最大利润:%d\n",pro);
return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值