每日一题(基础算法)

Maximun Profit(每日一题)

外汇交易可以通过兑换不同国家货币以赚取汇率差,比如1美元兑换100日元时购入1000美元,在1美元兑换108日元时再卖出,这样就可以赚取差价,现在将某货币t时的价格Rt作为数据,算出Rj-Ri的最大值(j>i)

  • 输入 第一行一个整数n,接下来n行依次给证书Rt赋值
  • 输出 单独一行输出最大值

解题思路:其实看到这个题,我首先想到的时dp,但是我看这个题的难度系数,并没有那么高,所以想暴力,于是就有这个思路:

for(int j = 1;j<n;j++)
{
	for(int i=0;i<j;i++)
		maxv = max(maxv,R[j]-R[i]);
}

但是注意到这个的时间复杂度能达到O(n^2) 觉得如果数据过大的话还是会卡住,会Wa,于是去查了查,看到了一种精彩的解题思路。

minv = R[0]
for(int i = 1;i<n;i++)
{
	maxv = max(maxv,R[i] - minv);
	minv = min(minv,R[i]);
}

这个解题的时间复杂度就变成了O(n),emmm,果然我还是菜。
(注释:min 与 max 指的是求最大最小的函数)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值