博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回一个整数数组中最大子数组的和
阅读量:5064 次
发布时间:2019-06-12

本文共 1279 字,大约阅读时间需要 4 分钟。

题目要求:

1、输入一个整形数组,数组里有正数也有负数。

2、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

3、求所有子数组的和的最大值。要求时间复杂度为O(n)     

 

设计思路:

1、建立二维数组Array,第一列存放输入的整数值。第二列存放子数组的和值(限定长度为100,2)

2、定义变量count为输入数字的个数,在循环中输入整数,结束的时候以输入9999代表结束

3、Array[0][1]=Array[0][0],进入循环判断,从i=1开始,若Array[i-1][1]<=0时,则Array[i][1]=Array[i][0]

                                                                               若Array[i-1][1]>0时,则Array[i][1]=Array[i-1][1]+Array[i][0]

4、最后从Array[][1]此第二列数组中找寻最大值,输出。

import java.util.Scanner;public class Maxshuzu {    public static void main(String args[])    {        int Array[][]=new int[100][2];        int count=0;        System.out.println("请输入整数(最多100个),结束请输入9999");        Scanner shu=new Scanner(System.in);                for(int i=0;i<100;i++)        {            Array[i][0]=shu.nextInt();            if(Array[i][0]==9999)                {                    count=i;                    break;                }        }        Array[0][1]=Array[0][0];        for(int i=1;i
0) { Array[i][1]=Array[i-1][1]+Array[i][0]; } } int Max=Array[0][1]; for(int i=1;i
Max) { Max=Array[i][1]; } } System.out.println("数组最大值为:"+Max); }}

截图:

存在问题:以9999结尾不够严谨,且没有列出最大数组各项值。(基本功能还是实现了的)

 

转载于:https://www.cnblogs.com/maplely/p/5364789.html

你可能感兴趣的文章
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
css3动画——基本准则
查看>>
输入月份和日期,得出是今年第几天
查看>>
pig自定义UDF
查看>>
Kubernetes 运维学习笔记
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
【AS3代码】播放FLV视频流的三步骤!
查看>>
枚举的使用
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
日志框架--(一)基础篇
查看>>
关于源程序到可运行程序的过程
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
【贪心+DFS】D. Field expansion
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>