1 问题描述

给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},那么输出为该子数组的和18。

2 解决方案

2.1 蛮力枚举法

package com.liuzhen.array_2;

public class MaxSubArray {

    public int bruteMethod(int[] A){
int maxResult = A[0];
int maxTemp = 0;;
for(int i = 0;i < A.length;i++){
for(int j = i;j < A.length;j++){
for(int k = i;k <= j;k++){
maxTemp += A[k];
}
if(maxTemp > maxResult)
maxResult = maxTemp;
maxTemp = 0; //完成一个子序列求和后,重新赋值为0
}
}
return maxResult;
} public static void main(String[] args){
MaxSubArray test = new MaxSubArray();
int[] A = {1,-2,3,10,-4,7,2,10,-5,4};
System.out.println("使用蛮力法求解数组A的最大连续子数组和为:"+test.bruteMethod(A));
}
}

运行结果:

使用蛮力法求解数组A的最大连续子数组和为:28

2.2 动态规划法

package com.liuzhen.array_2;

public class MaxSubArray {

    public int dynaticMethod(int[] A){
int maxResult = A[0];
int maxTemp = 0;
for(int i = 0;i < A.length;i++){
if(maxTemp >= 0)
maxTemp += A[i];
else
maxTemp = A[i];
if(maxTemp > maxResult)
maxResult = maxTemp;
}
return maxResult;
} public static void main(String[] args){
MaxSubArray test = new MaxSubArray();
int[] A = {1,-2,3,10,-4,7,2,10,-5,4};
System.out.println("使用动态规划法求解数组A的最大连续子数组和为:"+test.dynaticMethod(A));
}
}

运行结果:

使用动态规划法求解数组A的最大连续子数组和为:28

Java实现最大连续子数组和的更多相关文章

  1. Java课程课后作业190315之从文档中读取随机数并得到最大连续子数组

    从我上一篇随笔中,我们可以得到最大连续子数组. 按照要求,我们需要从TXT文档中读取随机数,那在此之前,我们需要在程序中写入随机数 import java.io.File; import java.i ...

  2. LeetCode 581. Shortest Unsorted Continuous Subarray (最短无序连续子数组)

    Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...

  3. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  4. [LeetCode] Shortest Unsorted Continuous Subarray 最短无序连续子数组

    Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...

  5. Leetcode 581.最短无序连续子数组

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

  6. 【LeetCode】1438. 绝对差不超过限制的最长连续子数组 Longest Continuous Subarray With Absolute Diff Less Than or Equal t

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 滑动窗口 日期 题目地址:https://leetco ...

  7. The Day Two 找到一个具有最大和的连续子数组,返回其最大和

    """ 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5, ...

  8. Leetcode581.Shortest Unsorted Continuous Subarray最短无序连续子数组

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

  9. 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度

    题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...

随机推荐

  1. [hdu4627 The Unsolvable Problem]数论

    题意:给一个数n,找一个正整数x<n,使得x和n-x的最小公倍数最大. 思路:显然x和n-x越接近越好,gcd必须为1(贪心).从大到小考虑x,如果n为奇数,则答案就是x=n/2,如果n为偶数, ...

  2. Pytorch使用分布式训练,单机多卡

    pytorch的并行分为模型并行.数据并行 左侧模型并行:是网络太大,一张卡存不了,那么拆分,然后进行模型并行训练. 右侧数据并行:多个显卡同时采用数据训练网络的副本. 一.模型并行 二.数据并行 数 ...

  3. 1008 Elevator (20分)

    1008 Elevator (20分) 题目: The highest building in our city has only one elevator. A request list is ma ...

  4. MyBatis In的使用

    http://blog.csdn.net/unei66/article/details/17792503 MyBatis In的使用 标签: mybatisin 2014-01-03 16:23 74 ...

  5. IIS网站发布不了.ttf .woff 文件 并且网站报脚本错误找不到

    -----------------------------解决方法------------------------------------------------ 1. 既然脚本发布不了,就将脚本从本 ...

  6. logger日志接口SLF4J

    SLF4J只是一个接口,可以实现程序的解藕.SLF4J可以与log4j.logback.jdk等日志系统结合,以及在这些日志系统之间切换. 使用maven导入各个日志系统的jar包.需要注意的是要写相 ...

  7. 【Java】手把手模拟CAS,瞬间理解CAS的机制

    话不多少,先看个案例,[模拟100个用户,每个用户访问10次网站]”: public class ThreadDemo1 { //总访问量 ; //模拟访问的方法 public static void ...

  8. Poj2965 冰箱的开关

    #include<iostream> using namespace std; int flag; int step; ][]; ] = { }; ] = { }; void turn(i ...

  9. 换个角度学习ASP.NET Core中间件

    中间件真面目 关于ASP.NET Core中间件是啥,简单一句话描述就是:用来处理HTTP请求和响应的一段逻辑,并且可以决定是否把请求传递到管道中的下一个中间件! 上面只是概念上的一种文字描述,那问题 ...

  10. 利用Jackson封装常用JsonUtil工具类

    在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转 ...