Java实现最大连续子数组和
2023-09-14 08:58:01 时间
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));
}
}
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));
}
}
相关文章
- Java实现数组反转的几种方法
- protostuff java_Protostuff一键序列化工具、Protobuf JAVA实现
- java工作流_Java 实现简单工作流
- java课程设计成绩管理系统_Java课程设计–学生成绩管理系统
- 【说站】Java数组如何实现动态初始化
- java检验数组重复_java – 如何遍历数组并检查重复项?「建议收藏」
- Java递归写法_java递归调用
- native2ascii java_Native2Ascii和Ascii2Native的Java实现
- Java字符串转集合_java集合转数组
- java输出一个数组的元素_Java输出数组元素「建议收藏」
- 【Groovy】Groovy 方法调用 ( 字符串切割 | 使用 Java 语法切割字符串 | 使用 Groovy 语法切割字符串直接为变量赋值 | 数组赋值给变量 变量个数小于等于数组长度 )
- Linux重装Java:给你的操作系统新的灵魂(linux重装java)
- 数据库实现Java程序与Oracle数据库的连接(java链接oracle)
- Java实现Redis分布式锁(java实现redis锁)
- 持久化Java持久化技术与Redis高级应用(redis高级之java)
- Java实现Redis事务管理(redis事务java)
- Java轻松使用Redis实现数据高效存储(java使用redis)
- Linux 升级Java:新版本带来的变化(linux升级java)
- Java学习Linux基础的必要性(java要学linux)
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- 实现Java实现Redis锁的研究与应用(redis锁java)
- Linux下Java应用打包实践(linux java打包)
- Java实现嵌入式MySQL的新解决方案(java嵌入式mysql)
- Java实现与Oracle数据库的无缝整合(java整合oracle)
- Java导入Oracle 实现快速数据传输(java导入oracle)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)