public class Solution {     public static int FindGreatestSumOfSubArray(int[] array) {         int maxCur = 0; // 保存返回的结果         if(array.length == 0){             return 0;         }else {   // -2,-8,-1,-5,-9 解决全为负数的时候,maxCur不能为0 的问题   ****修改1*******          maxCur = array[0];         }                  //         int totalNum = maxCur;  // 保存从某个位置为起点累加所有的数,得到的和                  for(int i=1; i<array.length; i++){             // 最大连续子序列的和不一定从第一个元素开始算起             // 当前面的数之和小于当前元素,当前最大值取“下一个元素”与“原最大值”之间的较大者          // ---------------------------------------------------             if(totalNum < 0){   // ****修改2*******               maxCur = Math.max(array[i], maxCur);                 totalNum = array[i];   // 只要原起点到当前位置的数字和小于0,就更新totalNum,即更新起点             }else{                 totalNum += array[i];                 if(totalNum > maxCur){  // 最新的起点到当前位置的和>原来的最大值时,更新最大值                     maxCur = totalNum;                 }             }             // ----------------------------------------------------         }         return maxCur;     }     /**     public static void main(String[] args) {      int result = FindGreatestSumOfSubArray(new int[]{1,2,3,4,5}); // -2,-8,-1,-5,-9 //  1,-2,3,4,5,6,-20,8      System.out.println(result);     }     */ }
点赞

相关推荐

10-30 23:23
已编辑
中山大学 Web前端
去B座二楼砸水泥地:这无论是个人素质还是专业素质都👇拉满了吧
点赞 评论 收藏
分享
牛客网
牛客企业服务