刷题 买卖股票的最佳时机

本文探讨了三种不同的算法解法来确定股票交易中的最大利润:一种基于交易状态判断,一种通过检测价格下降时买入,上升时卖出,另一种通过直接计算价格上涨的总和。每种方法都提供了在给定价格序列中获取最大收益的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的解法:如果现在的值比后来的值低,这应该买入,反之应该卖出,bool noing判断是否处于交易期

int maxProfit(vector<int>& prices) {

        if(prices.size()==0)
            return 0;
        bool noing=true; int lirun=0, maru=0,machu=0;
        for(int i=0;i<prices.size();i++){
             if(i==prices.size()-1&&!noing){
                 machu=prices[i];
                lirun+=machu-maru;
                noing=true; 
                continue;                
            }
            if(prices[i]<prices[i+1]&&noing){
                maru=prices[i];
                 noing=false;  
                continue;
            }
            if(prices[i]>prices[i+1]&&!noing){
                machu=prices[i];
                lirun+=machu-maru;
                noing=true; 
                continue;
            }
           
                
        }
        return lirun;

    }

解法一:没有实际的买入卖出操作,仅检测价格变低的情况,也是利润获得的情况,

int maxProfit(vector<int>& prices) {

if(prices.size()==0) return 0;

int result = 0;

int temp = prices[0];

for(int i = 1;i<prices.size();++i)

{

if(prices[i-1]>prices[i])

{

result += prices[i-1]-temp;

temp = prices[i];

}}

result += prices[prices.size()-1]-temp;

return result;

}

解法二:如果价格变高,改变值叠加便是利润,max删除价格变低的情况

int maxProfit(vector<int>& prices) {

int result = 0;

int s = prices.size();

for(int i=0; i<s-1; ++i){

result += max(0, prices[i+1]-prices[i]);

}

return result;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值