10、连续子数组最大和

3人阅读 评论(0) 收藏 举报
分类:

给定一个数组,求连续的几个子元素构成最大和的子集合:

public class findMaxSum {

    public int FindGreatestSumOfSubArray(int[] array) {

        if(array == null || (array.length == 1 && array[0] <= 0))
            return 0;

        int cur = array[0];
        int sum = array[0];
        for(int i = 1;i < array.length;i++){
            if(cur < 0)
                cur = 0;
            cur = cur + array[i];
            if(sum <= cur)
                sum = cur;
        }
        return sum;
    }

    //用动态规划
    public int FindGreatestSumOfSubArray2(int[] arr,int n){
        int sum = arr[0];
        int max = arr[0];
        for(int i = 1; i < n; i++){
            sum = getMax(sum+arr[i],arr[i]); //
            if(sum >= max)
                max = sum;
        }
        return max;
    }

    public int getMax(int a,int b){
        return a > b ? a: b;
    }


    public static void main(String args[]){
        findMaxSum ts = new findMaxSum();
        int[] a = {13,-30,5,4} ; //13
        System.out.println(ts.FindGreatestSumOfSubArray(a));
        System.out.println(ts.FindGreatestSumOfSubArray2(a,a.length));
    }
}
查看评论

动态规划典型例题--连续子数组的最大和

题目描述:给定一个数组arr,数组中的元素有整数也有负数,数组中的一个或者连续多个数组成一个子数组。 求所有子数组里面的最大和。例如现在有数组 {1 , -2 , 3 , 10 , -4 , 7...
  • qq_34528297
  • qq_34528297
  • 2017-05-24 19:27:09
  • 3410

面试题31:连续子数组最大的和

1)      第一种方法 #include using namespace std; //为了区分是函数返回0还是输入不合法返回0设置一个变量判断 bool inputInvalid=false...
  • lom9357bye
  • lom9357bye
  • 2015-06-02 12:00:34
  • 438

连续子数组的最大和 动态规划实现

/* *copyright@nciaebupt 转载请注明出处 *问题:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。 *求所有子数组的和的最大值。要求时间负责度为...
  • wuwuwuwuwuwuwuwu
  • wuwuwuwuwuwuwuwu
  • 2013-01-08 16:51:42
  • 2694

[LeetCode] Maximum Subarray 求连续子数组的最大和

声明:原题目转载自LeetCode,解答部分为原创 Problem :     Find the contiguous subarray within an array (co...
  • xblog_
  • xblog_
  • 2017-06-05 21:52:41
  • 555

LeetCode-连续子数组的最大和

Find the contiguous subarray within an array (containing at least one number) which has the largest ...
  • ivolcano
  • ivolcano
  • 2017-03-10 14:41:36
  • 1624

剑指offer----连续子数组的最大和----java实现

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

连续子数组的最大和问题(一维和二维)To the Max (POJ 1050)

一维数组的连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 这是一个典型的D...
  • huanyingtianhe
  • huanyingtianhe
  • 2015-01-25 16:35:33
  • 1348

Java编程----连续子数组的最大和

本篇博客的编程是关于数组的,数组在编程中有着举足轻重的地位,因为在Java中数组是直接存储在栈中的,所以操作起来很方便,效率非常高,数组也是面试中经常考察的一部分,关于数组的编程题目丰富多样,逻辑性很...
  • sd_lucky
  • sd_lucky
  • 2016-08-04 23:09:37
  • 3333

剑指Offer—编程题31(连续子数组的最大和)

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例子说明: 例如输入的数组为{1, -2,...
  • u012129558
  • u012129558
  • 2016-06-12 15:47:25
  • 542
    个人资料
    持之以恒
    等级:
    访问量: 5332
    积分: 811
    排名: 6万+
    博客专栏
    文章存档
    最新评论