Java算法之子数组中最大累加和
Posted 笔触狂放
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java算法之子数组中最大累加和相关的知识,希望对你有一定的参考价值。
题目:子数组中最大累加和
解题思路:
给定数组长度后,需要进行挨个累加,找出最大和的连续的数组
假设给定长度为4,那么第一轮就需要检测四边,需要检测第一个数,和第一个数加上第二个数之和的比较,找出最大值,再继续检测第一个数加上第二个数加上第三个数之和比较大小,直到获得第一轮里面累加和最大的连续子数组
在进行第二轮的检测,然后将第一轮的最大值和第二轮的最大值进行比较,获得最大的
在进行第三轮的检测,继续比较
在进行第四轮的检测,继续比较
package com.lqb2021;
import java.util.Random;
import java.util.Scanner;
public class T4_5 {
private int[] nums=null;
private void init() {
System.out.println("请输入一维数组长度:");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
scanner.close();
nums=new int[n];
for (int i = 0; i < nums.length; i++) {
nums[i]=(int)(Math.random()>0.3?new Random().nextInt(10)*-1:new Random().nextInt(10));
System.out.print(nums[i]+"\\t");
}
print();
}
private void print() {
int maxof=nums[0];
for (int i = 0; i < nums.length; i++) {
int sum=nums[i];
int max=sum;
for (int j = i+1; j < nums.length; j++) {
sum+=nums[j];
if (sum>max) {
max=sum;
}
}
if (max>maxof) {
maxof=max;
}
}
System.out.println("最大值为:"+maxof);
}
public static void main(String[] args) {
new T4_5().init();
}
}
解题思路二:
任意生成一个正负数混合的一维数组,还是进行挨个累加
但是只要判断每次累加后的结果为负数则舍弃,从后面的下标进行累加
package com.lqb2021;
import java.util.Random;
import java.util.Scanner;
public class T4_5_2 {
private int[] nums=null;
private void init() {
System.out.println("请输入一维数组长度:");
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
scanner.close();
nums=new int[n];
for (int i = 0; i < nums.length; i++) {
nums[i]=(int)(Math.random()>0.3?new Random().nextInt(10)*-1:new Random().nextInt(10));
System.out.print(nums[i]+"\\t");
}
print();
}
private void print() {
int maxof=nums[0];
int sum=maxof;
int left=0,right=0;
for (int i = 1; i < nums.length; i++) {
if (sum>=0) {
sum+=nums[i];
}else {
sum=nums[i];
left=i;
}
if (sum>maxof) {
maxof=sum;
right=i;
}
}
System.out.println();
System.out.println("最大值的子数组的下标为:"+left+"--"+right);
System.out.println("最大值为:"+maxof);
}
public static void main(String[] args) {
new T4_5_2().init();
}
}
以上是关于Java算法之子数组中最大累加和的主要内容,如果未能解决你的问题,请参考以下文章