问题描述 :

输入一个整数数组,数组里面有正数也有负数。数组中一个或连续几个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)

思路1:常规解法,不知道怎么描述了。。

代码:

boolean invalidInput = false;
public int FindGreatestSumOfSubArray(int[] array) { if(array == null || array.length == 0){
invalidInput = true;
return 0;
} int currentSum = 0;
int greatestSum = 0x80000000; for(int i = 0; i < array.length; i++){
if(currentSum < 0){
currentSum = array[i];
}else{
currentSum += array[i]
} if(currentSum > greatestSum){
greatestSum = currentSum;
}
} return greatestSum; }

思路2:动态规划

如果用函数f(i)表示以第i个数字结尾的子数组的最大和,那么我们需要求出max[f(i)],其中0<=i小于n.

递归公式如下:

f(i) = :pData[i] 当 i = 0或者f(i-1)<=0

:f(i-1)+pData[i] 当i不等于0或者f(i-1)>0

第二种解法代码与第一种其实是一样的。

最新文章

  1. 通过JAXB完成Java对象与XML之间的转换
  2. Adapter 启动时报错——2
  3. zoj2770 差分约束系统
  4. 把所有css放到一个css文件的格式
  5. C++类与对象
  6. HDU 2296 Ring (AC自动机+DP)
  7. HDU -2674 N!Again(小技巧)
  8. DataList、Repeater、GridView中的Checkbox取值问题
  9. nova-compute[5410]: OSError: [Errno 13] Permission denied: &amp;#39;图像路径&amp;#39;
  10. 基于注解的Spring MVC的简单入门——简略版
  11. js模块化规范
  12. 深入理解OkHttp源码(一)——提交请求
  13. mint-ui笔记
  14. 第七天 py
  15. VsCode 的使用
  16. ethereum/EIPs-1077 Executable Signed Messages
  17. Spring的 AOP底层用到两种代理机制
  18. python技巧 一等函数
  19. tomcat 输入学习
  20. CODEVS.3990.中国余数定理2(CRT)

热门文章

  1. sql 查看数据库物理文件路径
  2. uploadfy api中文文档
  3. ✡ leetcode 171. Excel Sheet Column Number 字母转换为数字 --------- java
  4. UART
  5. PetaPoco 批量插入数据
  6. Pads怎么设置某一网络的线宽
  7. C#固定时间执行指定事件(观察者模式+异步委托)
  8. gRaphael——JavaScript 矢量图表库:两行代码实现精美图表
  9. 关于CPLD与FPGA的对比分析
  10. j技术方案