zoukankan      html  css  js  c++  java
  • 求最小子数组01

      题目要求:一个整型数组,里面既有正数又有负数,要求一个时间复杂度为O(n)的算法来求出数组里面的最小子数组和的最大值。最小子数组指的是个数最少想连续的数组。

      设计思路:按照我自己的思路是利用循环的嵌套,挨个从数组中的每个元素出发,找出从该元素开始的最小子数组之和的最大值。但是这样算法的时间复杂度是O(n*n)。a老师提供的思路是动态划归的思路。这个思路挺好的,除了存放数字的数组array之外,再生成一个数组array1。array1数组中的第i+1个元素记录的是array前i个元素之和。如果array1[i+1]大于0,那么就把array1[i+1]和array[i+1]想加。否则array1[i+1]就是array[i+1]的值。每次都要更新maxVal的值。

     

    package Arraysum;
    import java.math.*;
    
    public class findMaxArray {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] array = {1,2,3,-20,5,6,7};
            int max = Find.find(array);
            for(int i = 0;i < array.length;i++)
            {
                System.out.print(array[i]+" ");
            }
            System.out.println();
            System.out.println("最大子数组之和为:"+max);
        }
    }
    
    class Find
    {
        public static int find(int[] array)
        {
            int array1[] = new int[array.length];
    //        for(int i = 1;i < array1.length;i++)
    //        {
    //            array1[i] = 0;
    //        }
            array1[0] = array[0];
            int maxVal = array[0];
            for(int i = 0;i < array.length - 1;i++)
            {
                //如果第i+1个元素的前i个元素之和大于0就把这i个元素的和加到第i+1个元素上面        即前i个元素对第i+1个元素有贡献
                if(array1[i] > 0)
                {
                    array1[i+1] = array1[i] + array[i+1];
                }
                //如果第i+1个元素的前i个元素之和小于0不加        即前i个元素对第i+1个元素没有贡献
                else
                {
                    array1[i+1] = array[i+1];
                }
                //更新最大值 
                maxVal = Math.max(maxVal,array1[i+1]);
            }
            return maxVal;
        }
    }

  • 相关阅读:
    xilinx下载器,JTAG-HS3和Platform Cable USB II 速度对比
    LATTICE下载器HW-USBN-2B使用说明
    altera下载器高速版本 PL-USB2-BLASTER 使用说明
    FPGA流程设计
    关于fpga的后仿真重要性
    使用MyBatis分页插件PageHelper遇到的问题
    java 面试题总结01
    netty Demo
    netty 概念篇
    pom.xml 简述
  • 原文地址:https://www.cnblogs.com/1102whw/p/5359387.html
Copyright © 2011-2022 走看看