package com.algorithm.test;
/**
* 最大子序列
* @author LiFen
*
*/
public class LargestSubsequence {
public static void main(String[] args) {
int[] arr = {,-,,-,-,,,-};
System.out.println(maxSubSum(arr)); System.out.println(maxSumRec(arr, , arr.length - )); System.out.println(maxSubSum2(arr));
} /*
* 时间复杂度O(N*N)
*/
public static int maxSubSum(int [] a) {
int maxSum = ; for(int i = ; i < a.length; i++) {
int thisSum = ;
for(int j = ; j < a.length; j++) { thisSum += a[j]; if(thisSum > maxSum)
maxSum = thisSum;
}
}
return maxSum;
}
/*
* 递归
* 时间复杂度O(N logN)
*/
public static int maxSumRec(int [] a, int left, int right) {
if(left == right) {
if(a[left] > )
return a[left];
else return ;
} int center = (left + right) / ;
int maxLeftSum = maxSumRec(a, left, center);
int maxRightSum = maxSumRec(a, center + , right); int maxLeftBorderSum = ,leftBorderSum = ;
for(int i = center; i >= left; i--) {
leftBorderSum += a[i];
if(leftBorderSum > maxLeftBorderSum)
maxLeftBorderSum = leftBorderSum;
} int maxRightBorderSum = , rightBoderSum = ;
for(int i = center + ; i <= right; i++) {
rightBoderSum += a[i];
if(rightBoderSum > maxRightBorderSum)
maxRightBorderSum = rightBoderSum;
}
return Math.max(Math.max(maxLeftSum, maxRightSum),maxLeftBorderSum + maxRightBorderSum);
}
/*
* 联机算法
* 快
*/
public static int maxSubSum2(int [] a) {
int maxSum = , thisSum = ; for(int i = ; i < a.length; i++) {
thisSum += a[i]; if(thisSum > maxSum) {
maxSum = thisSum;
}else if(thisSum < ){
thisSum = ;
}
}
return maxSum;
}
}

最新文章

  1. React2
  2. DataTables 控件使用和心得 (1) - 入门
  3. C++ Primer Plus读书笔记
  4. 在github上创建新分支
  5. iOS-打开word、ppt、pdf、execl文档方式
  6. Linux有问必答:怎样解决“XXX is not in the sudoers file”错误
  7. java根据sessionid获取session
  8. HDU 2151 Worm
  9. Object-C Dealloc
  10. bzoj1415
  11. js中浮点型运算 注意点
  12. 转 四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较
  13. Java基础系列--08_集合1
  14. C语言:函数嵌套2^2!+3^2!
  15. 【原】cpu消耗高,查看对应的线程栈信息
  16. bzoj1047/luogu2216 理想的正方形 (单调队列)
  17. PHP微信公共号H5支付。
  18. vue框架之自定义组件中使用v-model
  19. abp运行机制分析
  20. java thrift返回List异常

热门文章

  1. frambuffer 相关函数理解
  2. The CHAR and VARCHAR Types
  3. linux中weblogic相关命令操作
  4. 用photoshop 把视频镜头做成GIF图片
  5. c++ STL模板(一)
  6. 第三章&#160;列表(b)无序列表
  7. 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘
  8. c# 关闭和重启.exe程序
  9. 英文谚语:Take that with a grain of salt
  10. unity缓动插件DOTween Pro v0.9.680