博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
程序面试试题
阅读量:4630 次
发布时间:2019-06-09

本文共 858 字,大约阅读时间需要 2 分钟。

1.题目:

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100

解题思路:4个变量,分别表示第一次买入、第一次卖出、第二次买入、第二次卖出时候的最大收益,买入则收益为负,最后返回第二次卖出时的最大收益。

 

 
public
int
calculateMax(
int
[] prices) {
        
int
firstBuy = Integer.MIN_VALUE, firstSell =
0
;
        
int
secondBuy = Integer.MIN_VALUE, secondSell =
0
;
 
        
for
(
int
curPrice : prices) {
            
firstBuy = Math.max(firstBuy, -curPrice);
            
firstSell = Math.max(firstSell, firstBuy + curPrice);
            
secondBuy = Math.max(secondBuy,firstSell - curPrice);
            
secondSell = Math.max(secondSell, secondBuy + curPrice);
        
}
        
return
secondSell;
    
}
firstBuy表示第一次买入的最大收益,因为是买入所以是负值;
firstSell表示第一次卖出的最大收益;
secondBuy表示第二次买入的最大收益;
secondSell表示第二次卖出的最大收益;
 

转载于:https://www.cnblogs.com/fangmeng/p/7543180.html

你可能感兴趣的文章
LIKE 操作符
查看>>
15:解决IntelliJ IDEA的乱码问题
查看>>
python2和python3的区别
查看>>
Entity Framework的启动速度优化
查看>>
input 选择框改变背景小技巧
查看>>
Hadoop2.6.0伪分布环境搭建
查看>>
贴现因子
查看>>
2019-03-20 Python爬取需要登录的有验证码的网站
查看>>
docker(4)docker的网络,自定义网桥
查看>>
重读TCP协议(3)
查看>>
彻底解决Linux索引节点(inode)占用率高的告警
查看>>
阻塞队列与非阻塞队列
查看>>
python学习07
查看>>
添加MySql数据库超时设置的相关问题
查看>>
-lt -gt -ge -le -eq的意义
查看>>
i/o多路复用笔记
查看>>
Codeforces Round #539 (Div. 2) C. Sasha and a Bit of Relax
查看>>
LeetCode之461. Hamming Distance
查看>>
HSSFWorkbook 与 XSSFWorkbook
查看>>
希尔排序——算法系列
查看>>