金融AIGC研究
优质  高效     
优质的技术交付服务 迅捷的办事效率
我们专注品质与服务   决胜制高点  细节决定成败
Runoff commanding heights Detail decides success or failure
The commanding heights of
the details determine success or failure
技术动态
DETAIL
Leetcode 学习第四天
来源:互联网 | 作者:business-101 | 发布时间: 2024-03-24 | 160 次浏览 | 分享到:

https://datawhalechina.github.io/leetcode-notes/#/ch07/07.04/07.04.01-Exercises


.0121. 买卖股票的最佳时机

策略就是后续天的价格必需大于当前的价格, 一旦价格小于当前买入价格, 则必需考虑重新设定买于价格后,可以取得的最大收益, 具体算法如下:

class Solution {
    public int maxProfit(int[] prices) {
        int min=prices[0],max=prices[0];
        int id=0,id2=0;
        int ret=0;
        for(int i=1;i<prices.length;i++){
            if(prices[i]<min){if(prices[i-1]-min>ret)ret=prices[i-1]-min;min=prices[i];id=i;}
            else if(prices[i]>min){if(prices[i]-min>ret)ret=prices[i]-min;}
            // System.out.println("min:id:i:ret::"+min+":"+id+":"+i+":"+ret);
        }
        if(prices[prices.length-1]-min>ret)ret=prices[prices.length-1]-min;
            // System.out.println("min:id:i"+min+":"+id+":"+(prices.length-1)+":"+ret);
        return ret;
    }
}



0122. 买卖股票的最佳时机 II

这首题目要考察的是,当允许多次购买时,能够取得的最大收益,做为一个考虑收益的操作,

每一次存在递减的情况(后一个数小于前一个数),则需要考虑一次卖出,再接着买入,具体算法如下:

class Solution {
    public int maxProfit(int[] prices) {
        int min=prices[0],max=prices[0];
        int id=0,id2=0;
        int ret=0;
        for(int i=1;i<prices.length;i++){
            if(prices[i]<prices[i-1]){min=prices[i];id=i;}
            else if(prices[i]>prices[i-1]){ret+=prices[i]-prices[i-1];}
            // System.out.println("min:id:i:ret::"+min+":"+id+":"+i+":"+ret);
        }
        // if(prices[prices.length-1]-min>ret)ret=prices[prices.length-1]-min;
            // System.out.println("min:id:i"+min+":"+id+":"+(prices.length-1)+":"+ret);
        return ret;
    }
}


以下链接在电脑端访问:

https://www.odc.org.cn/page148?article_id=62