剑指offer 31题 【时间效率】连续子数组的最大和

来源:互联网 发布:乐视软件下载 编辑:程序博客网 时间:2024/05/14 10:41

题目描述

数组{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)


牛客传送门:点击打开链接


思路:设置一个最大值result、一个当前值的和curSum。从头开始遍历数组,当curSum小于等于0时,让curSum等于当前值, 每次遍历都和result比较,如果curSum大于result,更新result。

public class Title31 {    public int FindGreatestSumOfSubArray(int[] array) {        if(array == null || array.length == 0)            return 0;        int result = 0x80000000;        int curSum = 0;        for(int i=0;i<array.length;i++){            if(i == 0 || curSum <= 0){                curSum = array[i];            }else{                curSum += array[i];            }            if(result < curSum)                result = curSum;        }                return result;    }        public static void main(String[] args) {        int[] array = {6,-3,-2,7,-15,1,2,2};        System.out.println(new Title31().FindGreatestSumOfSubArray(array));    }}


0 0
原创粉丝点击