首页 > 其他分享 >剑指 Offer 63. 股票的最大利润(中等)

剑指 Offer 63. 股票的最大利润(中等)

时间:2023-08-24 20:23:14浏览次数:35  
标签:Offer 63 股票 中等 int vector 数组 prices dp

题目:

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        if(prices.empty()) return 0;      //要考虑数组为空的情况
        vector<vector<int>> dp(prices.size(), vector<int>(2, 0));      //确定动态数组大小和下表含义dp[i][j]:第i天j状态下的利润。其中:j=0代表不持有股票,j=1代表持有股票
        dp[0][0]=0;      //初始化动态数组,第一天不持有股票和第一天买入股票
        dp[0][1]=-prices[0];
        for(int i=1;i<=prices.size()-1;i++){
            dp[i][0] = max(dp[i-1][0], dp[i-1][1]+prices[i]);      //不持有股票两种情况:1.前一天就不持有 2.今天刚卖出
            dp[i][1] = max(dp[i-1][1], -prices[i]);      //持有股票两种情况:1.前一天就持有 2.今天刚买入
        }
        return dp[prices.size()-1][0];      //获取最大利润一定是不持有股票的状态
    }
};

标签:Offer,63,股票,中等,int,vector,数组,prices,dp
From: https://www.cnblogs.com/fly-smart/p/17655076.html

相关文章

  • 【剑指Offer】45、扑克牌顺子
    【剑指Offer】45、扑克牌顺子题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh......
  • 【剑指Offer】41、和为S的连续正数序列
    【剑指Offer】41、和为S的连续正数序列题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,......
  • 【剑指Offer】42、和为S的两个数字
    【剑指Offer】42、和为S的两个数字题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路:对于本题,比上一题简单一些。看到题目,我们的第......
  • 剑指 Offer 10- I. 斐波那契数列(简单)
    题目:classSolution{//动态规划public:intfib(intn){if(n<=1)returnn;vector<int>dp(2,0);//确定dp数组以及下标的含义dp[0]=0;//dp数组初始化dp[1]=1;for(inti=2;i<=n;i++){//递推顺序从......
  • 剑指 Offer 41. 数据流中的中位数(困难)
    题目:classMedianFinder{//暴力解法:每添加一个数字后用sort进行排序,然后返回中位数,时间复杂度:nlogn,会超时。因此采用**二分法查找并进行插入的方法**。时间复杂度:lognpublic:vector<int>nums;//初始化一个当前数组/**initializeyourdatastructure......
  • 2063:【例1.4】牛吃牧草
    2063:【例1.4】牛吃牧草时间限制:1000ms      内存限制:65536KB提交数:81880   通过数:50598【题目描述】有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天,或可供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃1天?【输入】(无)......
  • 「题解」Codeforces 1063F String Journey
    先reverse一下。不难看出选出的字符串长度为\(1,2,\cdots,k\)一定不劣,仅考虑这种形式的。然后考虑一手dp,设\(f_{i}\)表示最后一个子串是\(i\)为结尾,最长长度是多少。这样转移就是\(f_i\getsf_{j}+1,iff\s[j-f_j+1,j]\text{is}s[i-f_j,i]\text{'ssubstring}\)......
  • 剑指 Offer 51. 数组中的逆序对(困难)
    题目:classSolution{//这道题利用了归并排序(分而治之)的思想,就是在每一次排序中统计逆序对的个数public:intmergesort(intl,intr,vector<int>&nums,vector<int>&tmp){//tmp用于记录合并之前的两个子数组if(l>=r)return0;//递归......
  • 充电玩具外销美国ASTM F963 4.4标准办理流程
    中国制造的玩具以其质量稳定、价格优惠而受到世界各地消费者的青睐。然而,出口到美国这样一个重要市场需要符合一系列的标准要求,其中ASTMF9634.4标准是最为关键的之一。下面将介绍一下充电玩具外销美国ASTMF9634.4标准的办理流程。首先,如何确定自己的产品是否属于充电玩具范畴?根......
  • 6308: 和为给定数 二分
    描述 给出若干个整数,询问其中是否有一对数的和等于给定的数。 输入 第一行是整数n(0<n≤100,000),表示有n个整数。第二行是n个整数。整数的范围是在0到108之间。第三行是一个整数m(0≤m≤230),表示需要得到的和。  输出 若存在和为m的数对,输出两个整数,小......