题意指:找到提供给你的数组中的能获得最大递增值的子序列
如题目中的数组,最大的序列为子序列{4,-1,2,1} 返回6
public class Max { //寻找数组中能组成最大和的子序列 (相邻) public static int sequence(int[] arr) { //如果数组大小为0 返回0 if(arr.length == 0){ return 0; } //声明临时最大值 与 最大返回值 int maxTemp = 0; int maxRes = 0; //遍历数组 获取递加之和 for(int i=0;i<arr.length;i++){ //获取递加之和 maxTemp += arr[i]; //按照条件 递加之和小于0 则返回0 if(maxTemp <0){ maxTemp = 0; } //最大返回值等于 最大返回值现在是否大于或者等于临时最大递增之和呢? //如果判定true 则 返回maxRes最大返回值 , 否则返回临时最大递增值给maRes(用于return) maxRes = maxRes >= maxTemp? maxRes : maxTemp; } //返回结果 return maxRes; } }
最主要的判定在for循环中
根据数组演绎,每个数组中的值递加,如果小于0(为负数)则设定为0 在于最大返回值结果变量比较 小于它 则不计入
当计算结果中获取到的递加之和愈大 则maxRes 的变量值越大 再递加数组中后续的数值后,如果有较大结果可能则进行maxRes的改变 否则将不会变动