• 课堂练习——返回一个整数数组中最大子数组的和


    题目要求:返回一个整数数组中最大子数组的和

    具体要求:输入一个整形数组,数组里有正数也有负数;
         数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;
         求所有子数组的和的最大值。要求时间复杂度为O(n);
         发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。

    1.设计思想:

      设定三个变量,分别是max(子数组中的和的最大值,初始值为0)、result(当前子数组的和,初始值为0)、number(数组长度,初始值为0)。

      先让用户自己设定数组的长度,之后输入数组。从数组第一位开始遍历数组,result=result+当前数值,并判断:

          ①若result>max,则令max=result;

          ②若result<0,则result=0。

      最后当循环运行结束后,输出最后max的值。

    2.出现的问题:

       若输入值均为负数,则无法正确输出结果。

    3.可能的解决方案:

       在输入整个数组后,将max值赋值为a[0]。

    4.源程序:

     
     1 package text;
     2 
     3 import java.util.*;
     4 public class MaxResult
     5 {
     6     public static void main(String args[])
     7     {
     8         int max=0,number=0,result=0;
     9         Scanner in=new Scanner(System.in);
    10         System.out.print("请输入需要的数组长度:");
    11         number=in.nextInt();
    12         
    13         int a[]=new int [number];
    14         
    15         System.out.print("请输入一个长度为"+number+"的数组(输入范围:自然数):");
    16         for(int i=0;i<number;i++)
    17         {
    18             a[i]=in.nextInt();
    19         }
    20         
    21         max=a[0];
    22         
    23         for(int i=0;i<number;i++)
    24         {
    25             result=result+a[i];
    26             
    27             if(result>max)
    28             {
    29                 max=result;
    30             }
    31             if(result<0)
    32             {
    33                 result=0;
    34             }
    35         }
    36         
    37         System.out.println("该数组中相邻的元素所组成的子集的和中,最大值为:"+max);
    38     }
    39 }

    5.结果截图:

    6.总结

    在时间复杂度限制的情况下,尽可能使用简单的方法去完成题目要求,在每一次循环中要把各种情况全都考虑到,充分利用每次一循环,这一点至关重要。

  • 相关阅读:
    表单自动填充autocomplete的兼容性方案
    函数的默认参数值
    利用zookeeper搭建hadoop HA集群
    zookeeper设置开机启动项
    zookeeper集群挂了的恢复流程
    zookeeper集群搭建
    docker 安装ElasticSearch的中文分词器IK
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    把mysql服务设置开机启动项
    docker-compose的使用
  • 原文地址:https://www.cnblogs.com/Daddy/p/5359941.html
Copyright © 2020-2023  润新知