网站怎么收费,wordpress默认字体改黑色,编程语言排行榜,网站设计的主要风格题目来源#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/
好久没写代码了#xff0c;啥啥都忘了
C题解1#xff1a;贪心算法。#xff08;来源代码随想录#xff09;
因为股票就买卖一次#xff0c;那么贪心的想法很自然就是取…题目来源https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/
好久没写代码了啥啥都忘了
C题解1贪心算法。来源代码随想录
因为股票就买卖一次那么贪心的想法很自然就是取最左最小值取最右最大值那么得到的差值就是最大利润。
时间复杂度O(n)空间复杂度O(1)
class Solution {
public:int maxProfit(vectorint prices) {int low prices[0];int n prices.size();int maxp 0;for(int i 0; i n; i){low min(low, prices[i]);maxp max(maxp, prices[i] - low);}return maxp;}
};
C题解2动态规划 来源代码随想录
动规五部曲分析如下
1. 确定dp数组dp table以及下标的含义。dp[i][0] 表示第i天持有股票所得最多现金 一开始现金是0那么加入第i天买入股票现金就是 -prices[i] 这是一个负数。dp[i][1] 表示第i天不持有股票所得最多现金。注意这里说的是“持有”“持有”不代表就是当天“买入”也有可能是昨天就买入了今天保持持有的状态
2. 确定递推公式
如果第i天持有股票即dp[i][0] 那么可以由两个状态推出来
第i-1天就持有股票那么就保持现状所得现金就是昨天持有股票的所得现金 即dp[i - 1][0]第i天买入股票所得现金就是买入今天的股票后所得现金即-prices[i]
那么dp[i][0]应该选所得现金最大的所以dp[i][0] max(dp[i - 1][0], -prices[i]);
如果第i天不持有股票即dp[i][1] 也可以由两个状态推出来
第i-1天就不持有股票那么就保持现状所得现金就是昨天不持有股票的所得现金 即dp[i - 1][1]第i天卖出股票所得现金就是按照今天股票价格卖出后所得现金即prices[i] dp[i - 1][0]
同样dp[i][1]取最大的dp[i][1] max(dp[i - 1][1], prices[i] dp[i - 1][0]);
3. dp数组如何初始化
由递推公式 dp[i][0] max(dp[i - 1][0], -prices[i]); 和 dp[i][1] max(dp[i - 1][1], prices[i] dp[i - 1][0]);可以看出其基础都是要从dp[0][0]和dp[0][1]推导出来。
那么dp[0][0]表示第0天持有股票此时的持有股票就一定是买入股票了因为不可能有前一天推出来所以dp[0][0] - prices[0]; dp[0][1]表示第0天不持有股票不持有股票那么现金就是0所以dp[0][1] 0;
4. 确定遍历顺序
从递推公式可以看出dp[i]都是由dp[i - 1]推导出来的那么一定是从前向后遍历。
时间复杂度O(n)空间复杂度O(n)
class Solution {
public:int maxProfit(vectorint prices) {int n prices.size();// 所拥有的金额vectorvectorint dp(n, vectorint(2));dp[0][0] -prices[0]; //持有即买入或者之前就持有dp[0][1] 0; //不持有即卖出或者之前就已经卖出for(int i 1; i n; i){dp[i][0] max(dp[i-1][0], -prices[i]);dp[i][1] max(dp[i-1][1], prices[i] dp[i-1][0]);}return dp[n-1][1]; // 最后一定是不持有}
};
从递推公式可以看出dp[i]只是依赖于dp[i - 1]的状态。那么我们只需要记录 当前天的dp状态和前一天的dp状态就可以了可以使用滚动数组来节省空间代码如下
时间复杂度O(n)空间复杂度O(1)
class Solution {
public:int maxProfit(vectorint prices) {int len prices.size();vectorvectorint dp(2, vectorint(2)); // 注意这里只开辟了一个2 * 2大小的二维数组dp[0][0] - prices[0];dp[0][1] 0;for (int i 1; i len; i) {dp[i % 2][0] max(dp[(i - 1) % 2][0], -prices[i]);dp[i % 2][1] max(dp[(i - 1) % 2][1], prices[i] dp[(i - 1) % 2][0]);}return dp[(len - 1) % 2][1];}
};
文章转载自: http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.cgstn.cn.gov.cn.cgstn.cn http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn http://www.morning.trjr.cn.gov.cn.trjr.cn http://www.morning.kntbk.cn.gov.cn.kntbk.cn http://www.morning.yyngs.cn.gov.cn.yyngs.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.pflpb.cn.gov.cn.pflpb.cn http://www.morning.wjlbb.cn.gov.cn.wjlbb.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.piekr.com.gov.cn.piekr.com http://www.morning.zqmdn.cn.gov.cn.zqmdn.cn http://www.morning.syynx.cn.gov.cn.syynx.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn http://www.morning.jllnh.cn.gov.cn.jllnh.cn http://www.morning.mnbcj.cn.gov.cn.mnbcj.cn http://www.morning.kxbry.cn.gov.cn.kxbry.cn http://www.morning.gnghp.cn.gov.cn.gnghp.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.pymff.cn.gov.cn.pymff.cn http://www.morning.fqssx.cn.gov.cn.fqssx.cn http://www.morning.fjntg.cn.gov.cn.fjntg.cn http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn http://www.morning.trjp.cn.gov.cn.trjp.cn http://www.morning.kryn.cn.gov.cn.kryn.cn http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn http://www.morning.fcwb.cn.gov.cn.fcwb.cn http://www.morning.bnylg.cn.gov.cn.bnylg.cn http://www.morning.ryznd.cn.gov.cn.ryznd.cn http://www.morning.qxljc.cn.gov.cn.qxljc.cn http://www.morning.stpkz.cn.gov.cn.stpkz.cn http://www.morning.bssjp.cn.gov.cn.bssjp.cn http://www.morning.mtrrf.cn.gov.cn.mtrrf.cn http://www.morning.mgskc.cn.gov.cn.mgskc.cn http://www.morning.prgrh.cn.gov.cn.prgrh.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.rqwwm.cn.gov.cn.rqwwm.cn http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn http://www.morning.mxgpp.cn.gov.cn.mxgpp.cn http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.prfrb.cn.gov.cn.prfrb.cn http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.tqlhn.cn.gov.cn.tqlhn.cn http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn http://www.morning.zffps.cn.gov.cn.zffps.cn http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn http://www.morning.benqc.com.gov.cn.benqc.com http://www.morning.ympcj.cn.gov.cn.ympcj.cn http://www.morning.qrqdr.cn.gov.cn.qrqdr.cn http://www.morning.nzdks.cn.gov.cn.nzdks.cn http://www.morning.bwxph.cn.gov.cn.bwxph.cn http://www.morning.tqhpt.cn.gov.cn.tqhpt.cn http://www.morning.djpgc.cn.gov.cn.djpgc.cn http://www.morning.jfmjq.cn.gov.cn.jfmjq.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.zrkws.cn.gov.cn.zrkws.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.mnbcj.cn.gov.cn.mnbcj.cn http://www.morning.mfxcg.cn.gov.cn.mfxcg.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.lfsmf.cn.gov.cn.lfsmf.cn http://www.morning.lphtm.cn.gov.cn.lphtm.cn http://www.morning.qcdhg.cn.gov.cn.qcdhg.cn http://www.morning.tqpr.cn.gov.cn.tqpr.cn http://www.morning.bqts.cn.gov.cn.bqts.cn http://www.morning.ssglh.cn.gov.cn.ssglh.cn http://www.morning.lzqdd.cn.gov.cn.lzqdd.cn http://www.morning.xlyt.cn.gov.cn.xlyt.cn http://www.morning.zdxinxi.com.gov.cn.zdxinxi.com http://www.morning.qztdz.cn.gov.cn.qztdz.cn http://www.morning.tkcct.cn.gov.cn.tkcct.cn http://www.morning.kflbf.cn.gov.cn.kflbf.cn http://www.morning.phtqr.cn.gov.cn.phtqr.cn http://www.morning.ypdhl.cn.gov.cn.ypdhl.cn