LeetCode Best Time to Buy and Sell Stock III

原创 2015年07月08日 08:26:33

Description:

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.

Solution:

这道题目的变化是,至多可以买卖两次。

可以利用和1一样的想法,只不过1只需要从后往前遍历一次,或者从前往后遍历一次,这里就直接结合。考虑的想法是,既然买卖两次,可以以某个点为断点,前部分找一次最大,后部分找一次最大;然后遍历所有的点,将每个点前后两次最大利润加起来,取这个利润和的最大值。

import java.util.*;

public class Solution {
	public int maxProfit(int[] prices) {
		int n = prices.length;
		if (n == 0)
			return 0;

		int after[] = new int[n];
		int before[] = new int[n];

		int maxPrice = prices[n - 1], max = 0;
		for (int i = n - 1; i >= 0; i--) {
			maxPrice = Math.max(maxPrice, prices[i]);
			max = Math.max(max, maxPrice - prices[i]);
			after[i] = max;
		}

		int minPrice = prices[0];
		max = 0;
		for (int i = 0; i < n; i++) {
			minPrice = Math.min(minPrice, prices[i]);
			max = Math.max(max, prices[i] - minPrice);
			before[i] = max;
		}

		max = 0;
		for (int i = 0; i < n; i++)
			max = Math.max(max, after[i] + before[i]);
		return max;
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Best Time to Buy and Sell Stock III(leetcode)

题目: Say you have an array for which the ith element is the price of a given stock on day i. ...

leetcode Best Time to Buy and Sell Stock III

Best Time to Buy and Sell Stock III  Say you have an array for which the ith element is the...

[LeetCode]123. Best Time to Buy and Sell Stock III

[LeetCode]123. Best Time to Buy and Sell Stock III题目描述思路动态规划 举例来说 index 0 1 2 3 4 5 ...

leetcode Best Time to Buy and Sell Stock(I~III)(*)

I: Say you have an array for which the ith element is the price of a given stock on day i. I...

leetcode 123. Best Time to Buy and Sell Stock III

Say you have an array for which the ith element is the price of a given stock on day i. Design an...

【leetcode】Array——Best Time to Buy and Sell Stock I/II/III

Best Time to Buy and Sell Stock 题目: Say you have an array for which the ith element is the pri...

leetcode: Best Time to Buy and Sell Stock III

先用dp[i]表示当前下标之前最低价格,再ba

[LeetCode] Best Time to Buy and Sell Stock III

问题: Say you have an array for which the ith element is the price of a given stock on day i. ...

[LeetCode] Best Time to Buy and Sell Stock III

Say you have an array for which the ith element is the price of a given stock on day i. Design ...

[LeetCode10]Best Time to Buy and Sell Stock III

Say you have an array for which the ith element is the price of a given stock on day i. Design an...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)