zoukankan      html  css  js  c++  java
  • 求子数组的最大和

    题目描述:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    求所有子数组的和的最大值。要求时间复杂度为O(n)。

    例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
    因此输出为该子数组的和18。

    View Code
    public static void MaxSum(int[] arr) {
             
    int startSumMax = 0;
             
    int endSumMax = 0;    
             
    int startIndex = 0;
             
    int endIndex = 0;
             
    int max = 0;
            
    for (int i = 0; i < arr.length; i++) {
                
    int startTmp = SumInt(startSumMax, arr[i]);
                
    int endTmp = SumInt(endSumMax, arr[arr.length - 1 - i]);
                
    if (startTmp < arr[i]) {
                    startIndex 
    = i;
                    startSumMax 
    = arr[i];
                } 
    else {

                    startSumMax 
    = startSumMax + arr[i];
                }
                
    if (endTmp < arr[arr.length - 1 - i]) {
                    endIndex 
    = arr.length - 1 - i;
                    endSumMax 
    = arr[arr.length - 1 - i];
                } 
    else {
                    endSumMax 
    = endSumMax + arr[arr.length - 1 - i];
                }
            }
            
    if (startIndex > endIndex) {
                
    //Error
            }
            
    for (int i = startIndex; i < endIndex; i++) {
                max 
    = max + arr[i];
            }
        }
  • 相关阅读:
    getElementsByTagName得到的对象
    小体验
    javascript + sql编写SQL客户端工具tabris
    netcore2.0 ORM框架中如何配置自定义的主外键加载
    教你如何反编译app,拿到加密方式
    编译c语言程序扩展ruby
    在 Windows 上测试 Redis Cluster的集群填坑笔记
    MONO 如何打包 .NET程序独立运行(winform篇)
    vmware安装黑苹果教程
    AntData.ORM框架 之 DotnetCore
  • 原文地址:https://www.cnblogs.com/hda37210/p/2065586.html
Copyright © 2011-2022 走看看