返回一个整数数组中最大子数组的和02
首先创建一个input.txt文件,我将其放在了D盘中
这个就是返回一个数组的子数组和的最大值的进阶,我的想法是:首先使用文件流读取文件,存入一个字符串数组中,在将字符串数组转化为整型数组,其他的基本和第一个的思路相同。
注:注意大数处理,这里我是用一个static方法来进行处理。
import java.io.BufferedReader; import java.io.FileReader; import java.math.BigInteger; import java.util.Arrays; import java.util.stream.IntStream; //返回子数组的最大值,文件操作 public class Test3 { public static void main(String[] args) throws Exception { String[] sp = null; //读取文件 BufferedReader br = new BufferedReader(new FileReader("D:/input.txt")); String str; while ((str = br.readLine()) != null){ sp = str.split(","); } //将字符串数组转化为整型数组 int[] array = Arrays.stream(sp).mapToInt(Integer::parseInt).toArray(); System.out.println(getMax(array)); } //用于接收数组,将其转化为数字并比较 public static int getMax(int array[]){ int[] arr = new int[100]; Bignum(array); int temp = 0; int max = 0; int sum = 0; for (int i = 0; i < array.length; i++) { sum += array[i]; if(sum <= 0){ sum = 0; } if(sum > 0){ max = sum; } } return max; } //判断大数 public static void Bignum(int[] array){ BigInteger[] big = new BigInteger[100]; for (int i = 0; i < array.length; i++) { if(!array.equals("")){ big[i] = new BigInteger(String.valueOf(array[i])); } } } }
由于所有的数据已经在input.txt中写好(当然我的数据和题目中的不同,测试所需),所以运行结束以后只有一个最大值。
有什么不足的欢迎大家指正。