最近面试算法题遇到寻找最大连续子数组和的问题。例如{1,-2,3,4}的最大子数组是{3,4}和为7
Java代码如下
import java.io.InputStream;
import java.util.Scanner;
public class Pai {
public static void main(String[] args) {
System.out.println(“please write yuur want number .”);;
Scanner scanner = new Scanner(System.in);
int[] i = new int[scanner.nextInt()];
System.out.println(“please write yuur want “);;
for (int j = 0; j < i.length; j++) {
i[j] =scanner.nextInt();
}
fuc(i);
}
public static void fuc(int[] Array) {
int MAX = 0;
int now_sum = 0;
boolean tag = false;
int[] i = Array;
for (int now_number : i) {
if (now_number >= 0) {
now_sum += now_number;
if (now_sum > MAX) {
MAX = now_sum;
if (!tag) {
tag = true;
}
}
}
// now_number<0;
else {
now_sum += now_number;
if (now_sum > 0) {
} else {// now_sum<=0
now_sum = 0;
}
}
}
if (tag) {
System.out.println(MAX);
} else {
if (i != null)
MAX =max(i);
System.out.println(MAX);
}
}
// 方法外判断i是否为null好!!!
private static int max(int[] i) {
int max_num = i[0];
for (int j : i) {
if (max_num < j) {
max_num = j;
}
}
return max_num;
}
}
// 方法外判断i是否为null好!!!
这个地方让我想起一个有意思的事,如果函数的返回类型是int型(例如Linux系统c语言main函数中,大部分都有返回值以实现管道),难免出现返回
成功值和返回错误值相同的情况,如实现一个功能:判断a是int型返回a;如果不是返回错误值——例子举的有点脑残,就将就一下吧。对于解决办法大家可以思考选取自己认为最优的。