美文网首页
算法导论之求股票最大收益

算法导论之求股票最大收益

作者: cammsia | 来源:发表于2016-09-14 10:09 被阅读155次

股票的最大收益的起点 start和终点end;x,y等是中间点。
end - start = end - x + x - y +y +..... -end
把股票的点数组转成连续点区间数组,然后找区间数组的最大子数组,起点和终点就是两个边界都分别加1。

package com.cammsia;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/** * Created by cammsia on 16/9/11. */
public class Test {  
  public static void main(String[] args) {   
   int a[] = { -47, 10, 23, 4, 3, 4, 3, 2, 46, 5, 5 };  
   int b[] = new int[a.length -1];    
   for (int i = 0; i < a.length-1; i++) {     
     b[i] = a[i+1] - a[i];   
   } 
   int maxSum = 0;  
   int curSum = 0;  
   int endIndex = 0;  
  int startIndex = 0;   
  for (int i = 0; i < b.length; i++) {   
     curSum += b[i];     
     //找終点     
    if (curSum > maxSum) {     
     endIndex = i + 2;    
     maxSum = curSum;     
    }    
   //找起点     
   if (curSum < 0) {     
    startIndex = i + 2;    
    curSum = 0;    
   }    
}    
System.out.println(startIndex + ":" + endIndex);    System.out.println(maxSum); 
 }}

相关文章

  • 算法导论之求股票最大收益

    股票的最大收益的起点 start和终点end;x,y等是中间点。end - start = end - x + x...

  • 用分治法求最大子项

    算法导论中的伪代码转换而来的Java语言实现的求最大子项的实现

  • 好文章索引

    算法 《算法导论》快速指南:我是如何10天入门算法导论的。 - 渗透之美 - 知乎专栏 推荐内容索引 - 老赵点滴...

  • LeetCode-714-买卖股票的最佳时机含手续费

    第i天持有股票dp_1[i]的最大收益 由两个状态转移而来, 昨天持有股票or昨天没有持有股票但今天买入了,求两个...

  • 2018-05-24

    算法导论,分治算法,最大子数组问题。python ,代码抄袭,Dacixie的博客--https://blog.c...

  • 求最大收益

    题目:知道一段时间内股价的走势,求一个买入卖出,获取的收益最大。 思路:碰到时间段n+1>n的,说明股市向上涨,则...

  • JZ-075-股票的最大利润

    股票的最大利润 题目描述 可以有一次买入和一次卖出,买入必须在前。求最大收益。例子:题目描述 [7, 1, 5, ...

  • 121. Best Time to Buy and Sell S

    有一个数组,元素是每天股票的价格假设你只允许交易一次(买入和卖出股票),设计一个算法可以获取最大收益。比如: 动态...

  • 回溯算法总结

    回溯法学习总结 回溯算法也是算法导论中常用的算法,回溯算法类似于暴力求解算法,经常用在求可能解的问题。下面我将从三...

  • 算法笔记

    Array 最大收益 假设您有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润。您可以...

网友评论

      本文标题: 算法导论之求股票最大收益

      本文链接:https://www.haomeiwen.com/subject/fjwmettx.html