滴滴编程题第一个,最大连续子数组问题。
解决思路:
相当于定义两个变量,一个累加子数组和,一个最大的子数组和。
package didi;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int MaxSum=0;
Scanner input = new Scanner(System.in);
ArrayList<Integer> array = new ArrayList<>();
String s = input.nextLine();
if(!(s.isEmpty()||s==null ||s.length()==0))
{
String[] s1 = s.split(" ");//此处修改分隔符类型
for (int i = 0; i < s1.length; i++) {
array.add(Integer.valueOf(s1[i]));
}
MaxSum=MaxSum(array.size(),array);
}
System.out.println(MaxSum);
}
//连续子数组最大和 n 为数组的大小,array传进来的数组
public static int MaxSum(int n, ArrayList<Integer> array)
{
int sum=0;//最大的子数组和
int b=0; //累加的子数组和
//判断特殊条件
if(array==null||array.size()==0)
{
return 0;
}
else
{
for (int i=0;i<array.size();i++)
{
if(b>0)
{
b+= array.get(i);
}
else
{
b = array.get(i);
}
if(b>sum)
{
sum=b;
}
}
return sum;
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务