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;
	}
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐