【牛客】中国牛市
鏈接:https://www.nowcoder.com/questionTerminal/9370d298b8894f48b523931d40a9a4aa?orderByHotValue=0&query=%E9%A3%8E%E5%8F%A3%E7%9A%84%E7%8C%AA-%E4%B8%AD%E5%9B%BD%E7%89%9B%E5%B8%82&done=0&pos=1
來(lái)源:牛客網(wǎng)
?
[編程題]風(fēng)口的豬-中國(guó)牛市
風(fēng)口之下,豬都能飛。當(dāng)今中國(guó)股市牛市,真可謂“錯(cuò)過(guò)等七年”。 給你一個(gè)回顧歷史的機(jī)會(huì),已知一支股票連續(xù)n天的價(jià)格走勢(shì),以長(zhǎng)度為n的整數(shù)數(shù)組表示,數(shù)組中第i個(gè)元素(prices[i])代表該股票第i天的股價(jià)。 假設(shè)你一開(kāi)始沒(méi)有股票,但有至多兩次買入1股而后賣出1股的機(jī)會(huì),并且買入前一定要先保證手上沒(méi)有股票。若兩次交易機(jī)會(huì)都放棄,收益為0。 設(shè)計(jì)算法,計(jì)算你能獲得的最大收益。 輸入數(shù)值范圍:2<=n<=100,0<=prices[i]<=100
示例1
輸入
3,8,5,1,7,8輸出
12學(xué)習(xí)別人的思想
public class Main {public int calculateMax(int[] prices) {int firstBuy = Integer.MAX_VALUE;int afterFirstSell = 0;int afterSecondBuy = Integer.MIN_VALUE;int afterSecondSell = 0;for(int curPrice:prices){//買入的價(jià)格越小越好firstBuy = Math.min(firstBuy,curPrice);//第一次賣出去的收益,越大越好afterFirstSell = Math.max(afterFirstSell,curPrice-firstBuy);//第二次買入后的收益,越大越好afterSecondBuy = Math.max(afterSecondBuy,afterFirstSell-curPrice);//第二次賣出去的收益,越大越好afterSecondSell = Math.max(afterSecondSell,afterSecondBuy+curPrice);}return afterSecondSell;} }?
總結(jié)
- 上一篇: 基于ssm框架的绩效管理系统
- 下一篇: 软件生命周期模型优缺点及适用范围