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

    package day;
    /**
     * 两个子数组的最大和
     * 1.先逆序从右忘左算出以每一个index位开始到右的累加和记载在h[]中,
     * 在正序遍历最大的累加和,遍历的过程中前后最大值累加,记载最大值
     * @author Administrator
     *
     */
    public class Demo1 {
        public int method(int[] array){
            int arraylength = array.length;
            int[] h = new int[arraylength];
            h[arraylength - 1] = array[arraylength - 1];
            int cur = array[arraylength - 1];
            for(int i = arraylength - 2;i >=0;i --){
                cur = cur < 0 ? 0 : cur;
                cur= array[i] + cur;
                h[i] = Math.max(cur, h[i + 1]);
            }
            cur = array[0];
            int lmax = array[0];
            int max = array[0] + h[1];
            for(int i = 1;i < array.length - 1;i ++){
                cur = cur < 0 ? 0 : cur;
                cur = cur + array[i];
                lmax = Math.max(cur, lmax);
                max = Math.max((lmax + h[i + 1]), max);
            }
            return max;
        }
        public static void main(String[] args) {
            int[] array = {1,-5,7,-4,6,-9,3,6,-7};
            System.out.println(new Demo1().method(array));
        }
    }
  • 相关阅读:
    java枚举常见用法
    redis初使用
    Linux上搭建svn资源库
    redis集群创建
    大数据学习之Hadoop运行模式
    集群时间同步
    ssh免密登录
    mvc项目问题清单以及解决方法
    Memcached分布式缓存初体验
    Asp.Net 一个请求的处理流程
  • 原文地址:https://www.cnblogs.com/caobojia/p/6765669.html
Copyright © 2011-2022 走看看