博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Best Time to Buy and Sell Stock III 两次买卖股票的最佳时机 (重重重)
阅读量:4108 次
发布时间:2019-05-25

本文共 897 字,大约阅读时间需要 2 分钟。

题目:

只能买卖两次,而且最大手里只有一只股票。求最大利润。

解答:

参考:

代码:

/*  解释:  首先,因为能买2次(第一次的卖可以和第二次的买在同一时间),但第二次的买不能在第一次的卖左边。  所以维护2个表,f1和f2,size都和prices一样大。  意义:  f1[i]表示 -- 截止到i下标为止,左边所做交易能够达到最大profit;  f2[i]表示 -- 截止到i下标为止,右边所做交易能够达到最大profit;  那么,对于f1 + f2,寻求最大即可。  */  class Solution {  public:	  int maxProfit(vector
&prices) { int size = prices.size(); if (size == 0) return 0; vector
f1(size); vector
f2(size); int minV = prices[0]; f1[0] = 0; for (int i = 1; i < size; i++) { minV = min(minV, prices[i]); f1[i] = max(f1[i - 1], prices[i] - minV); } int maxV = prices[size - 1]; f2[size - 1] = 0; for (int i = size - 2; i >= 0; i--) { maxV = max(maxV, prices[i]); f2[i] = max(f2[i + 1], maxV - prices[i]); } int sum = 0; for (int i = 0; i < size; i++) { sum = max(sum, f1[i] + f2[i]); } return sum; } };

转载地址:http://pytsi.baihongyu.com/

你可能感兴趣的文章
shared_ptr简介以及常见问题
查看>>
c++11 你需要知道这些就够了
查看>>
c++11 你需要知道这些就够了
查看>>
shared_ptr的一些尴尬
查看>>
C++总结8——shared_ptr和weak_ptr智能指针
查看>>
c++写时拷贝1
查看>>
C++ 写时拷贝 2
查看>>
Linux网络编程---I/O复用模型之poll
查看>>
Java NIO详解
查看>>
before start of result set 是什么错误
查看>>
(正则表达式)表单验证
查看>>
在JS中 onclick="save();return false;"return false是
查看>>
内容里面带标签,在HTML显示问题,JSTL
查看>>
VS编译器运行后闪退,处理方法
查看>>
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
ng-class的几种用法
查看>>
matplotlib.pyplot.plot()参数详解
查看>>
拉格朗日对偶问题详解
查看>>
MFC矩阵运算
查看>>