由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Best Time to Buy and Sell Stock III怎么能证明或者保证两个区间没有相交?
相关主题
关于leetcode上那个买卖股票II的问题Best Time to Buy and Sell Stock II这么简单?
Best Time to Buy and Sell Stock 出三了。。。问一个java的函数调用问题
我也遇到leetcode上Run Time Error,但在自己的机子能通过请问为什么这个程序会出现RunTime Error
leetcode里Best Time to Buy and Sell Stock III怎么做?[solved]stock这题目我 自己调试没问题,为什么leetcode总过不去
有个很简单的程序但是有segmentation fault是问啥问一道题(6)
请教一个DP解法f电面
Leetcode 上面的 Best Time to Buy and Sell Stock III不相交区间问题
做了一下 Google 的 Best Time to Buy and Sell Stock II讨论一下cc150的10.3
相关话题的讨论汇总
话题: int话题: max话题: prices话题: stock话题: sell
进入JobHunting版参与讨论
1 (共1页)
a***e
发帖数: 413
1
别人的答案,但不太清楚怎么能证明或者保证两个区间没有相交?我开始是想照CC150
上说的那样把所有可能的情况列出来找规律,但到后面越想就越糊涂了。多谢!
比如
1235
12305
10325
1032502
‘You may not engage in multiple transactions at the same time (ie, you must
sell the stock before you buy again).’
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).
// LeetCode, Best Time to Buy and Sell Stock III
// 时间复杂度O(n),空间复杂度O(n)
class Solution {
public:
int maxProfit(vector& prices) {
if (prices.size() < 2) return 0;
const int n = prices.size();
vector f(n, 0);
vector g(n, 0);
for (int i = 1, valley = prices[0]; i < n; ++i) {
valley = min(valley, prices[i]);
f[i] = max(f[i - 1], prices[i] - valley);
}
for (int i = n - 2, peak = prices[n - 1]; i >= 0; --i) {
peak = max(peak, prices[i]);
g[i] = max(g[i], peak - prices[i]);
}
int max_profit = 0;
for (int i = 0; i < n; ++i)
max_profit = max(max_profit, f[i] + g[i]);
return max_profit;
}
};
d********t
发帖数: 9628
2
绿皮书原题,kadanes algo

CC150
must

【在 a***e 的大作中提到】
: 别人的答案,但不太清楚怎么能证明或者保证两个区间没有相交?我开始是想照CC150
: 上说的那样把所有可能的情况列出来找规律,但到后面越想就越糊涂了。多谢!
: 比如
: 1235
: 12305
: 10325
: 1032502
: ‘You may not engage in multiple transactions at the same time (ie, you must
: sell the stock before you buy again).’
: Say you have an array for which the ith element is the price of a given

a***e
发帖数: 413
3
请问绿皮书是哪本书啊?多谢
g****9
发帖数: 163
4
我是这样子想的 要是有交集的话 那只需要交易一次就可以了,题目说的是最多可以交
易两次。比如 你用DP的算法算出来 第一天买进 第五天卖出 第五天买入 第十天卖出
的时候profit最多 这样子的话 其实可以看做第一天买进 第十天卖出 只交易一次就行
了 不知道这样子回答你了没有

CC150
must

【在 a***e 的大作中提到】
: 别人的答案,但不太清楚怎么能证明或者保证两个区间没有相交?我开始是想照CC150
: 上说的那样把所有可能的情况列出来找规律,但到后面越想就越糊涂了。多谢!
: 比如
: 1235
: 12305
: 10325
: 1032502
: ‘You may not engage in multiple transactions at the same time (ie, you must
: sell the stock before you buy again).’
: Say you have an array for which the ith element is the price of a given

1 (共1页)
进入JobHunting版参与讨论
相关主题
讨论一下cc150的10.3有个很简单的程序但是有segmentation fault是问啥
Bloomberg 面试题请教请教一个DP解法
C++定义数组长度可以写成int a[n]吗?Leetcode 上面的 Best Time to Buy and Sell Stock III
再次请教精华区里Capital One的信用卡问题做了一下 Google 的 Best Time to Buy and Sell Stock II
关于leetcode上那个买卖股票II的问题Best Time to Buy and Sell Stock II这么简单?
Best Time to Buy and Sell Stock 出三了。。。问一个java的函数调用问题
我也遇到leetcode上Run Time Error,但在自己的机子能通过请问为什么这个程序会出现RunTime Error
leetcode里Best Time to Buy and Sell Stock III怎么做?[solved]stock这题目我 自己调试没问题,为什么leetcode总过不去
相关话题的讨论汇总
话题: int话题: max话题: prices话题: stock话题: sell