Leetcode(W9):123. Best Time to Buy and Sell Stock III(动态规划)

来源:互联网 发布:淘宝评价语100字 编辑:程序博客网 时间:2024/05/22 14:07

leetcode中Best Time to Buy and Sell Stock买卖股票的最佳时间总共有5道类型题。


1. Best Time to Buy and Sell Stock III

介绍:

Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete at most two transactions.
Note: You may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

题意:

给定一个数组,下标代表第几天,元素值即为当天可买进或卖出的股票价格,现在设定我们最多能进行2次交易(注意每次卖都必须卖光,不能说我今天1块钱买入明天2块钱卖出,后天又能3块钱卖出,一次交易只能一次买对应一次卖),谋取最大利益然后输出这个最大利益。

思路:

由于有了IV的思路,传送门在此,所以这道题直接用IV的解法令K为2即可。
这里主要讲一下用二维数组的做法,在IV中说了一维数组更方便好用,确实如此,因此貌似IV有一个样例你用二维数组会RT,也不知道是不是内存炸掉了,好吧反正就是我用二维数组做不出来囧,不过二维数组做一做K为2的情况还是可以的。

2. 代码

class Solution {public:    int maxProfit(vector<int> &prices) {        if (prices.empty()) return 0;        int n = prices.size(), g[n][3] = {0}, l[n][3] = {0};        for (int i = 1; i < prices.size(); ++i) {            int diff = prices[i] - prices[i-1];            for (int j = 1; j <= 2; ++j) {                l[i][j] = max(g[i-1][j-1] + max(diff, 0), l[i-1][j] + diff);                g[i][j] = max(l[i][j], g[i-1][j]);            }        }        return g[n-1][2];    }};
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 绝地求生刺激战场延迟高怎么办 怀孕八个半月打喷嚏头疼怎么办 20岁打喷嚏漏尿怎么办 鼻炎犯了不停打喷嚏怎么办 鼻炎犯了不停打喷嚏流鼻涕怎么办 感冒鼻痒怎么办小窍门 腰扭了屁股也疼怎么办 小三把房子过户怎么办 小三把房子卖了怎么办 打印机ip地址变了怎么办 电脑ip地址错误不能上网怎么办 修改了注册表电脑无法启动怎么办 香水喷到衣服上有印怎么办 家里一股猫的味道怎么办 干菊花里面有虫怎么办 安装时显示程序已关闭怎么办 电脑一直重启开不了机怎么办 应用安装在sd卡打不开怎么办 安装ps打不开安装包怎么办 安装好的软件打不开怎么办? win10系统语言修改不了怎么办 一个月婴儿吵夜怎么办 玩游戏一直闪退怎么办 钱站一直闪退怎么办 win7重装连不上网怎么办 笔记本屏幕横过来了怎么办 3D贴图丢了怎么办 百度文库安装后手机打不开怎么办 win7系统不带usb驱动怎么办 手机网页上的pdf打不开怎么办 网页下载pdf后缀是.do怎么办 ps界面太小怎么办win10 ps软件打不开程序错误怎么办 ps打开后 未响应怎么办 ps图层无法解锁怎么办 ie8浏览器电脑不能用怎么办 系统要ie6.0才能打开怎么办 2g手机内存不够怎么办 2g运行内存不够怎么办 手机运行内存2g不够怎么办 手机无法加载程序秒退怎么办