已知一支白菜连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该白菜第i天的
来源:互联网 发布:java培训班 北京 编辑:程序博客网 时间:2024/04/30 00:48
风口的猪
已知一支白菜连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该白菜第i天的股价。 假设你一开始没有白菜,但有至多两次买入1棵而后卖出1棵的机会,并且买入前一定要先保证手上没有白菜。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100
输入例子:
3,8,5,1,7,8
输出例子:
12
public class Solution { /** * 计算你能获得的最大收益 * * @param prices Prices[i]即第i天的股价 * @return 整型 */public int calculateMax(int[] prices) { if(prices==null || prices.length==0 || prices.length<2 || prices.length>100){ return 0; } int len = prices.length; int[] dpl = new int[len]; dpl[0] = 0; int minI = 0; for(int i=1; i<len; i++){ //从左到右扫描一遍填充dpl数组 if(prices[i]>prices[i-1]){ dpl[i] = Math.max(prices[i]-prices[minI],dpl[i-1]); } else{ dpl[i] = dpl[i-1]; if(prices[i]<prices[minI]) minI = i; } } int[] dpr = new int[len]; dpr[len-1] = 0; int maxI = len-1; for(int i=len-2; i>=0; i--){//从右到左扫描一遍填充dpr数组 if(prices[i]<prices[i+1]){ dpr[i] = Math.max(prices[maxI]-prices[i], dpr[i+1]); } else{ dpr[i] = dpr[i+1]; if(prices[i]>prices[maxI]){ maxI = i; } } } int res = 0; for(int i=0; i<len; i++){ //比较得出最大值 res = Math.max(dpl[i]+dpr[i], res); } return res; }}
0 0
- 已知一支白菜连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该白菜第i天的
- 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天
- “数组a,长度为n(索引为0至n-1)。现要求更新数组的各个元素,使新数组的第i个元素等于原数组中除第i个元素之外各元素之积。”
- 数组a,长度为n(索引为0至n-1)。现要求更新数组的各个元素,使新数组的第i个元素等于原数组中除第i个元素之外各元素之积
- 数组a,长度为n(索引为0至n-1)。现要求更新数组的各个元素,使新数组的第i个元素等于原数组中除第i个元素之外各元素之积
- 每天学习一算法系列(33)(n 支队伍比赛,分别编号为0,1,2......n-1,已知它们之间的实力对比关系,存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强)
- n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系, 存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强的一支。
- n支队伍比赛,分别编号为0,1,2。。。。n-1,已知它们之间的实力对比关系, 存储在一个二维数组w[n][n]中,w[i][j] 的值代表编号为i,j 的队伍中更强的一支。
- 已知n行数据,自上而下为第1行,第2行.....第n行。第i行数据有i个,求从第1行至第n行的最短路径及路径长度。
- java删除长度为n的数组中第pos个位置的元素
- 美团2017校招(内推):计数:count(i)表示数组中第i 个元素后比其小的元素个数
- log(n)时间内找出数组第i小的数字
- 数组乘积--数组中除第i个外的所有其他数组元素的乘积
- 注意引用数组@array第i个元素的时候,$array[i]不是@array[i]
- 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素
- 在O(n)时间内找到数组中的第i小的元素
- 两个数组a[N],b[N],其中a[N]的各个元素值已知,现给b[i]赋值
- 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值 .
- opencv基础
- IE6/7/8兼容HTML5和css3
- 图片述说JVM运行时的故事(上)
- local variable XXX referenced before assignment
- 模拟退火 hdu3932
- 已知一支白菜连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该白菜第i天的
- 指针作为参数
- 整理下最近在做的android5.0的代码,留用
- [LeetCode] 92. Reverse Linked List II
- java之FileReader与FileWriter
- C++实现删除单链表节点的功能(源代码+截图)
- LeetCode——045
- 利用最小堆管理事件超时
- triple