java-最大连续子数组和(最大字段和)

时间:2022-09-01 22:20:52

1.题目要求

  给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n

例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。

2.代码实现

public class MaxArray {

	public static void main(String[] args){
int arr[] = {-2,11,-4,13,-5,-5,-2};
int result = maxSubArray(arr);
System.out.println("最大子段和为:"+result);
} public static int maxSubArray(int[] arr){
int sum = 0;
int maxsum = 0;
for(int i = 0; i < arr.length; i ++){
if(sum <= 0){
sum = arr[i];
}else{
sum += arr[i];
}
if(sum > maxsum){
maxsum = sum;
}
}
return maxsum;
}
}

代码已上传到 GitHub

3单元测试选择:条件组合覆盖

3.1覆盖标准

  使得每个判定中条件的各种可能组合都至少出现一次。

3.2条件选择的程序流程图如下

java-最大连续子数组和(最大字段和)

条件组合 执行路径
sum<=0,sum>=maxsum acdf
sum>0,sum>=maxsum abdf
sum>0,sum< maxsum abdef
sum<=0,sum< maxsum acdef

测试数据只需要一组[5,2,-8,3]即可实现上述四种执行路径

3.3测试代码

import static org.junit.Assert.*;
import org.junit.Test; public class MaxArrayTest { @Test
public void testMaxSubArray() {
int[] arr={5,2,-8,3};
assertEquals(7,MaxArray.maxSubArray(arr));
}
}

3.4测试结果

java-最大连续子数组和(最大字段和)

java-最大连续子数组和(最大字段和)的更多相关文章

  1. 连续子数组的最大乘积及连续子数组的最大和(Java)

    1. 子数组的最大和 输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.例如数组:arr[]={1, 2, 3, -2, ...

  2. Java课程课后作业190315之最大连续子数组(二维数组版)

    ,, 在本周的课堂上,老师再一次提高了要求,将一维数组升级成为了二维数组,然后求出块状的连续子数组. 一开始还想着借鉴之前球一维数组的O(n)的算法,后来还是没有找到头绪,舍友讲了自己的办法,但是没有 ...

  3. 算法笔记&lowbar;043&colon;最大连续子数组和(Java)

    目录 1 问题描述 2 解决方案 2.1 蛮力枚举法 2.2 动态规划法   1 问题描述 给定一个整数数组,数组里可能有正数.负数和零.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和 ...

  4. 连续子数组的最大和 java实现

    package findMax; /** * 连续子数组的最大和 * @author root * */ public class FindMax { static int[] data = {1,- ...

  5. Java实现 LeetCode 581 最短无序连续子数组&lpar;从两遍搜索找两个指针&rpar;

    581. 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: ...

  6. lintcode :continuous subarray sum 连续子数组之和

    题目 连续子数组求和 给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大.输出答案时,请分别返回第一个数字和最后一个数字的值.(如果两个相同的答案,请返回其中任意一个) 样例 给定 [-3, ...

  7. 找一个数组的最大和的连续子数组&lpar;时间复杂度 O&lpar;n&rpar;&rpar;(二)

    要求: 要求数组从文件读取. 如果输入的数组很大,  并且有很多大的数字,  就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出. 另外, 如果输入文件的参数有错误, 这个程序应该 ...

  8. 连续子数组和的最大值plus

    package wodeshiyao; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStre ...

  9. 剑指 offer 面试题31 连续子数组的最大和(动态规划)

    求连续子数组的最大和 题目描述 给定一个整形数组,有正数也有负数,数组中连续一个或多个组成一个子数组,求所有子数组的和的最大值,要求时间复杂度为O(n); 测试用例 给定数组 {1,-2,3,10,- ...

  10. Demo003 最大连续子数组问题(《算法导论》4&period;1-5)

    问题 问题描述  给定n个整数(可能为负数)组成的数组,要求一个数组连续下标和的最大值,数组的元素可正.可负.可为零.  数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的 ...

随机推荐

  1. javascript中三种典型情况下this的含义

    this本意:基于函数的执行环境绑定. 1)一般函数内部,返回的是window(作用域链中的第二层全局作用域) function test() { return this; } alert(test( ...

  2. hive单机安装(实战)

    hive使用与注意事项:http://blog.csdn.net/stark_summer/article/details/44222089 连接命令:beeline -n root -u jdbc: ...

  3. Macaca-iOS入门那些事2

    Macaca-iOS入门那些事2 一. 前言 上文<Macaca-iOS入门那些事>讲到Macaca环境部署及运行了第一个案例,本文将讲解其案例编写. 二. 测试案例解析 iOS案例:ma ...

  4. 黑马程序员&lowbar;&lt&semi;&lt&semi;StringBuffer&comma;包装类&gt&semi;&gt&semi;

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. StringBuffer 1.概述 S ...

  5. 修改 CKEditor 超链接的默认协议

    在 config.js 中添加如下代码 CKEDITOR.on( 'dialogDefinition', function( ev ) { // Take the dialog name and it ...

  6. 超越村后端开发(3:安装djangorestframework&plus;序列化&plus;API开发前期准备)

    1.安装djangorestframework 1.安装djangorestframework及其依赖包markdown.django-filter. pip install djangorestfr ...

  7. Confluence 6 修改默认空间标识图片

    空间标识图片在边栏上的站点目录(Sites Directory)中作为图标进行显示.默认的空间标识图片将会应用到所有的空间中,如果你没有自定义的空间标识被定义的话,请查看 Configure the ...

  8. Mybatis源码分析之Mapper执行SQL过程(三)

    上两篇已经讲解了SqlSessionFactory的创建和SqlSession创建过程.今天我们来分析myabtis的sql是如何一步一步走到Excutor. 还是之前的demo    public  ...

  9. OGG&lowbar;GoldenGate数据迁移三进程Extract &sol; Dump &sol; Relicat(案例)

    2014-03-04 Created By BaoXinjian

  10. DecimalFormat的使用

    DecimalFormat,四舍五入时需要设置RoundingMode 1.占位符0: 比实际数字的位数多,不足的地方用0补上. new DecimalFormat("00.00" ...