• 课堂练习三


    返回一个整数数组中最大子数组的和

    设计思路:只能遍历一周,设置一个当前最大值curMax和一个最大和Max,设置for循环进行遍历,当当前最大值大于等于0则继续累加,如果小于等于0则重置,到最后比较当前最大值和最大和,最后输出最大和。

    出现的问题:最大值初始不能设置为0。

    可能的解决方案:初始设置为最小整数min_value.

    源代码:

    package test1;
    
    import java.util.Scanner;
    
    public class Test {
    
        public static void main(String[] args) {
            int[]  list =new int[100];
            int length;
            Scanner input =new Scanner(System.in);
            System.out.println("请输入数组的长度:");
            length = input.nextInt();
            if(length<=0)
            {
                System.out.println("未输入数!");
            }
            else
            {
                System.out.println("请输入数!");
                for(int i=0;i<length;i++)
                {
                    list[i]=input.nextInt();
                }
            }
            input.close();
             // 记录最大的子数组和,开始时是最小的整数
            int max = Integer.MIN_VALUE;
            // 当前的和
            int curMax = list[0];
            // 数组遍历
            for (int i=0;i<length;i++) {
                // 如果当前和小于等于0,就重新设置当前和
                if (curMax <= 0) {
                    curMax = list[i];
                }
                // 如果当前和大于0,累加当前和
                else {
                    curMax += list[i];
                }
    
                // 更新记录到的最在的子数组和
                if (max < curMax) {
                    max = curMax;
                }
            }
            System.out.println("最大的子数组和:"+max);
    
        }
    
    }

    结果截图:

    总结:这个题目一开始听到确实一点头绪没有,或许是根本就没理解题目,不过在看了那么生动的演示后,大致懂了,回来试了一下,还是挺简单的,很好实现啊。

  • 相关阅读:
    ES7/ES8 语法学习
    JavaScript中this对象原理简洁说明
    浅谈http协议
    各个浏览器之间常见的兼容性问题
    npm -v 报错:cannot find module 'core-util-is'
    对象遍历的几种方法
    Vue项目如何关闭Eslint检测
    axios 基本运用
    如何去掉vue路由中的#
    vue 父子组件、兄弟组件传值
  • 原文地址:https://www.cnblogs.com/kt97458/p/5364843.html
Copyright © 2020-2023  润新知