【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
来源:互联网 发布:excel筛选两列重复数据 编辑:程序博客网 时间:2024/04/28 17:11
1.背景
最大序列和问题一直以来是一个比较经典的算法题,看到这个问题,有很多解题的办法。今天看到了一种时间复杂度只为O(n)的解题算法,在这里记录下。
思路很简单,比方说有P1,P2,P3,P4.....这样一个序列,我们从P1开始求和,比如说在P5时求和数小于零,就可以断定。第一种情况,最大序列在P1~P5之间,或者说在P6~Pn之间。因为如果P1+P2+......+P5的和小于零,那么它可以看成一个数,而且是序列第一个数,则任何一个最大序列都不会包含这个数。
2.代码实现
package Algorithm_analysis;public class MaxSumOfArray { public static void main(String args[]){ System.out.print(max_sum()); } public static int max_sum(){ int[] array={-2,11,-4,13,-5,-2}; int max_sum=0; int array_sum=0; for(int j=0;j<array.length;j++) { array_sum+=array[j]; if(array_sum<0){ max_sum=0; } if (array_sum>max_sum) { max_sum=array_sum; } } return max_sum;} }
参考:http://blog.csdn.net/superchanon/article/details/8228212 (完全四种实现方法)
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
1 0
- 【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
- 时间复杂度为O(N)的求最大子序列和的算法
- 数据结构和算法学习系列之最大子序列求和问题的O(N)时间复杂度
- 最大子序列和问题的求解(时间复杂度为O(N))
- 实现数组元素倒序的算法,写出两种实现,时间复杂度为O(n)和O(n/2)
- [java实现]找一个数组的最大和的连续子数组(时间复杂度 O(n))
- [java实现]找一个数组的最大和的连续子数组(时间复杂度 O(n))
- 最大连续子序列和 HDU 1231 (时间复杂度为O(n))
- 以时间复杂度O(n)计算最大子序列和
- 数据结构之---求最大字段和, 时间复杂度o(n)算法
- 算法-子数组连续序列最大和其时间复杂度如何从O(n^3)到O(n)
- 最大子序列和的求解(时间复杂度O(N))
- 实现排序算法,时间复杂度为O(n)
- 时间复杂度为O(n)的排序算法--计数算法
- Java练习:时间复杂度为O(n*n)的三大基本排序算法
- 时间复杂度为O(n)的排序算法
- 面试9:时间复杂度为O(n)的排序算法
- 平均时间复杂度为O(n)的选择算法
- erlang 一些常用函数 缓慢填坑
- 心急的C小加(南阳oj236)(贪心)
- 解决outlook 2013搜索卡住(不停止)的问题
- JavaScript语言基础13
- 常用的id IDFA IDFV MAC UDID openUDID
- 【算法数据结构Java实现】时间复杂度为O(n)的最大和序列
- 快速幂 生成素数表 生成Euler欧拉函数值表
- Android的GridView控件点击图片变暗效果
- Balloon Comes!
- ios 正则表达式
- C++中变量内存模型和函数调用
- gcc中格式化输出函数的研究
- MySQL 5.6同步复制新特性详解
- Qt5 程序发布windowsXP一些问题