算法導論之求股票最大收益

股票的最大收益的起點 start和終點end;x,y等是中間點。
end - start = end - x + x - y +y +..... -end
把股票的點數組轉成連續(xù)點區(qū)間數組,然后找區(qū)間數組的最大子數組,起點和終點就是兩個邊界都分別加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); 
 }}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容