• 最大子数组求解


                                                      最大子数组求解 

          最大子数组求解 一开始是想到了一个比较笨的方法,就是所有的子数组全部求出来 让后再将最大的子数组求解出来 但是这个时间复杂度就比较大不符合老师的时间复杂度是

    f(n)的要求,于是我观察了题目 ,如果全是正数的话那他的最大子数组肯定是它本身 ,但是数组里边有正数和负数,所以可能会出现想加到某一位他的和变成负数这样就是最大的子数组,当相加到前几位之和小于零的话就要重新,数组子和就要归零,重新在那那一位上相加即可。这样的和就就是求出的最大子数组。

    运行结果截图:

    我用了 几分钟加了一个随机生成数组的方法  这样数组就是随机产生的

    import org.junit.Test;
    
    public class shuzu1 {
    
        @Test
        public void fun(){
            int[] b = new int[5];
            shengchengs(5,b);
            for(int i=0;i<5;i++){
            System.out.print(b[i]+" ");
            }
            System.out.println("最大子数组为:"+zuishuzhu(b));
        }
     public int  zuishuzhu(int []a){
         int temp=0;
         int Max=0;
         int length=a.length;
         for(int i=0;i<length;i++){
             temp+=a[i];
             if(temp>Max){
                 Max=temp;
                 
             }
             if(temp<0){
                 temp=a[i];
             }
         }
         return Max;
     }
    
    public void shengchengs(int a,int[]b){
        Random rand=new Random();
        for(int i=0;i<a;i++){
            b[i]=rand.nextInt()%100;
            int c=rand.nextInt()%2;
            if(c==0){
                b[i]=-b[i];
            }
        }
        
        
    }
    }
  • 相关阅读:
    hash和history的区别帮助向我一样迷的人弄明白,history和hash
    调用谷歌浏览器的打印所遇到的困难,回流重绘
    webpack简单搭建基础感悟
    linux
    介绍一下call,apply,bind方法实现,源于MDN中的bind
    二进制流转base64加快速度
    手写一个instanceof
    青蛙跳台阶问题
    Django中vue的使用
    pip install 出现 timeout 时的两个临时解决办法
  • 原文地址:https://www.cnblogs.com/qerror404/p/4357732.html
Copyright © 2020-2023  润新知