【剑指offer】连续子数组的最大和

原创 2016年08月31日 10:24:42

题目描述

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?

这实际上是一个逐步比较的过程,假设累加进行到某一步,继续累加下一个数的时候发现和变小了,就应该重新计算当前累加的和,这实际上就是一个重新赋值的过程。如果累加之后发现变大了,这当然是我们想要的,自然就继续累加了。累加之后再判断是否大于原来的最大值,如果不是的话,就重新赋值最大值为当前累加的和(因为它更大)。

package com.gpl.offer.jianzhi;

/**
 * Created by gpl on 2016/8/30.
 */
public class ArraySum {     //连续子数组的最大和

    public int findarray(int[] array){
        if(array == null || array.length == 0)
            return 0;
        int sum = 0;
        int curSum = 0;
        for(int i=0;i<array.length;i++){
            if(curSum<=0)
                curSum = array[i];
            else
                curSum += array[i];
            if(curSum > sum)
                sum = curSum;
        }
        return sum;
    }

    public static void main(String[] args){
        int[] array = new int[]{1,-2,3,10,-4,7,2,-5};
//        int[] array = {1,3,5,-6,9,10,-11,20};
        ArraySum as = new ArraySum();
        System.out.println(as.findarray(array));

    }
}


相关文章推荐

剑指offer-5-面试31:连续子数组的最大和(时间效率)

题目 分析 测试用例代码 本题考点 题目 输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)...

剑指offer-面试题31.连续子数组的最大和

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或者连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度O(n)   本题可以把所有子数组全部找出来再求其和的最大值便可以得...

【剑指offer】面试题42:连续子数组的最大和

题目输入一个整形数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如,输入的数组为{1, -2, 3, 10, -4, 7...

剑指offer--面试题31:连续子数组的最大和

 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是...

剑指offer 31. 连续子数组的最大和

//题目:输入一个数组,输出这个数组的连续子数组的最大和 //如果已有最大和小于0,则与当前数字相加的结果比这个数字更小,所以可以直接舍弃之前的结果,当前的最大子数组和就是这个元素的值 public ...

【一些题】剑指offer:连续子数组最大和

方法一程序

剑指Offer----面试题31:连续子数组的最大和

题目: 输入一个整型数组,数组里有正数也有负数,数组中一个或连续的多个整数数组组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n). 分析: 例如输入数组 ...

剑指offer---连续子数组的最大和、第一个只出现一次的字符的位置

举几个例子: 数组:[1, -2, 3, 5, -3, 2]应返回8. 数组:[-9, -2, -5, -3, -4]应返回-2. public class FindGreate...

【剑指Offer学习】【面试题31:连续子数组的最大和】

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例子说明: 解题思路: 解法一:举例分析数组的规律 解法二...

《剑指offer》:[31]连续子数组的最大和及子序列的值

题目:输入一个整形数组,数组里有整数也有负数。数组中一个或连续多个整数组成一个子数组。求所有子数组的和的最大值和其序列的值。要求时间复杂度为O(N)。例如输入数组为{1,-2,3,10,-4,7,2,...
  • gogoky
  • gogoky
  • 2016年06月10日 19:05
  • 983
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【剑指offer】连续子数组的最大和
举报原因:
原因补充:

(最多只允许输入30个字)