博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algorithms—123.Best Time to Buy and Sell Stock III
阅读量:2457 次
发布时间:2019-05-11

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

思路:限制交易两次。首先,求出单次交易最大利润,然后,只有2种可能,与此次交易无关,那么不在左侧就在右侧,再求一次,或者是与此次交易有关,那么在此次交易的日期限制内找出一段利润最低(负值)。比较左侧,右侧,中间的负值的绝对值的大小。

这段代码写的比较丑,凑合的看吧。sum3是中间的负值。

public class Solution {    public int maxProfit(int[] prices) {		if (prices.length <= 1) {			return 0;		}		int[] change = new int[prices.length - 1];		for (int i = 0; i < change.length; i++) {			change[i] = prices[i + 1] - prices[i];		}		int sum0 = 0;		int s0 = 0;		int b=0;		int e=0;		int begin0 = 0;		int end0 = 0;		for (int i = 0; i < change.length; i++) {			s0 += change[i];			if (s0 < 0) {				s0 = 0;				b=i+1;				e=i+1;			}			if (change[i] > 0) {				e=i;			}			if (s0 > sum0) {				sum0 = s0;				begin0=b;				end0=e;			}		}		int sum1 = 0;		int s1 = 0;		for (int i = 0; i 
sum1) { sum1 = s1; } } int sum2 = 0; int s2 = 0; for (int i = end0+1; i
sum2) { sum2 = s2; } } int sum3 = 0; int s3 = 0; for (int i = begin0+1; i
0) { s3 = 0; } if (s3 < sum3) { sum3 = s3; } } return sum0+Math.max(0-sum3, Math.max(sum1, sum2)); }}

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

你可能感兴趣的文章
raspberry pi_PiFlash入门:在Linux上启动Raspberry Pi
查看>>
raspberry_您最老的Raspberry Pi多大了?
查看>>
vscode构建rust_使用rust-vmm构建未来的虚拟化堆栈
查看>>
joplin_介绍Joplin,这是Evernote的开源替代方案
查看>>
使用Pygame模块使用Python构建游戏框架
查看>>
如何使用PostgreSQL简化Python代码
查看>>
软件博览会上的致辞_本地制造商博览会上有4个著名的开源项目
查看>>
pygame游戏角色旋转_使用Pygame移动游戏角色
查看>>
为什么Python和Pygame是入门程序员的最佳选择
查看>>
上海微钉科技面试题_钉住面试的7个技巧
查看>>
linux有桌面有的没桌面_Linux桌面的政治
查看>>
库蒂尼奥_尼奥基入门
查看>>
强化学习入门论文_强化学习入门
查看>>
kubernetes入门_Kubernetes入门
查看>>
aalto 交互_向芬兰的Aalto Fablab付款
查看>>
迈向更大包容性
查看>>
linux 邮件开源工具_5个适用于Linux的开源个人理财工具
查看>>
机器学习入门python_使用Python进行机器学习入门
查看>>
kde调整分辨率_7个很酷的KDE调整将改变您的生活
查看>>
卫星重访周期_通过开放式冒险重访巨大的洞穴
查看>>