(算法)买卖股票的最佳时机Ⅱ————<贪心算法>
·
1. 题⽬链接:122.买卖股票的最佳时机II
2. 题⽬描述:


3. 解法(贪⼼):
贪⼼策略:
由于可以进⾏⽆限次交易,所以只要是⼀个「上升区域」,我们就把利润拿到⼿就好了。
C++算法代码:
class Solution
{
public:
int maxProfit(vector<int>& p)
{
// 实现⽅式⼀:双指针
int ret = 0, n = p.size();
for (int i = 0; i < n; i++)
{
int j = i;
while (j + 1 < n && p[j + 1] > p[j]) j++; // 找上升的末端
ret += p[j] - p[i];
i = j;
}
return ret;
}
};
class Solution
{
public:
int maxProfit(vector<int>& prices)
{
// 实现⽅式⼆:拆分成⼀天⼀天
int ret = 0;
for (int i = 1; i < prices.size(); i++)
{
if (prices[i] > prices[i - 1])
ret += prices[i] - prices[i - 1];
}
return ret;
}
};
Java算法代码:
class Solution
{
public int maxProfit(int[] prices)
{
// 实现⽅式⼀:双指针
int ret = 0, n = prices.length;
for (int i = 0; i < n; i++)
{
int j = i;
while (j + 1 < n && prices[j] < prices[j + 1]) j++; // 向后寻找上升的
末端
ret += prices[j] - prices[i];
i = j;
}
return ret;
}
}
class Solution
{
public int maxProfit(int[] prices)
{
// 实现⽅式⼆:拆分成⼀天⼀天的形式
int ret = 0;
for (int i = 1; i < prices.length; i++)
{
if (prices[i] > prices[i - 1])
{
ret += prices[i] - prices[i - 1];
}
}
return ret;
}
}
更多推荐

所有评论(0)