• 求数组的子数组的最大值


      一个整形数组,要求其子数组和的最大值,我才用的是将最大的子数组,写出来,逐次减去第一个,之后会比较最大值,知道减完。

    源代码:

    public class App7 {
        public static void main(String[] args) 
        {
            Scanner in= new Scanner(System.in);
            int[] num=new int [100];
            int[] num2=new int [100];
            int max=0;
            boolean f=false;
            int  s=in.nextInt();
            for(int i=0;i<s;i++) {         //输入数组
                num[i]=in.nextInt();
                if(num[i]>=0)f=true;
            }
            if(f==true) {
            max=num[0];
            num2[0]=num[0];
            for(int i=1;i<s;i++) {
                num2[i]=num2[i-1]+num[i];
                if(num2[i]>num2[i-1])max=num2[i];
            }
            for(int i=0,j=0;j<s;) {            //循环减去第一个
                num2[i]=num2[i]-num[j];
                if(num2[i]>max)max=num2[i];
                if(i==s-1) {j++;i=j;}
                else i++;
            }
            }
            else {
                max=num[0];
                num2[0]=num[0];
                for(int i=1;i<s;i++) {
                    num2[i]=num2[i-1]+num[i];
                    if(num2[i]>max)max=num2[i];
                }
            }
            System.out.println(max);
        }
        
    }

    在刚写完这个程序,最后检验的时候,我找到了当数组全为负数的时候,结果出现差错,原因是在最后一个循环的时候,两个数相减导致最大值为0.

    对此我采用判断输出全为负数是,只需采用第二个循环就可以输出正确的结果。

  • 相关阅读:
    HBase 使用与原理总结
    Java8 的一些使用总结
    对Redis的一些理解
    BERT模型源码解析 -- 转载
    BERT原理解析 -- 转载
    SQL 多表查询之 where和INNER JOIN
    Spark 数据处理相关代码
    Sql实战 1.单表复用进行比较排名
    LeetCode 47.括号生成 DFS递归
    LeetCode 46.机器人的运动范围
  • 原文地址:https://www.cnblogs.com/huan-ch/p/10506048.html
Copyright © 2020-2023  润新知