zoukankan      html  css  js  c++  java
  • 题目:返回一个整数数组中最大子数组的和。

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

    设计思路:

    (1)先创建一个数组,并输入数据(有正有负)

      (2) 子数组的个数是连续的,按数组长度对数组进行划分

    (3)开始计算,从第二个开始加上第一个,如果大小大于它本身,就分到一个子数组,然后第三个加上前两个,如果大于它本身就保留,划分到一个子数组;如果小于它本身就舍弃前面的值,并继续重复此操作,直到数组遍历一遍

     注意:要求时间复杂度为O(n)所以只能遍历一遍

    代码:

    package text;
    
    import java.util.Scanner;
    
    public class Maxsz {
    	
    	public static void main(String[] args) {
    		
    		int a[]=new int [100];
    		int i;
    		Scanner in=new Scanner(System.in);
    		System.out .println("请输入数组的个数");
    		int n=in.nextInt();
    		for(i=0;i<n;i++)
    		{
    			a[i]=in.nextInt();
    		}
    		int max=0;
    		for(i=1;i<n;i++)
    		{
    			if(a[i]+a[i-1]>a[i])
    			{
    				a[i]=a[i]+a[i-1];
    				if(a[i]>max)max=a[i];
    			}
    			
    		}
    		System.out.println("子数组的最大值为:"+max);
    		
    	}
    
    }
    

      结果截屏:

         

  • 相关阅读:
    【排序】紧急集合
    Tallest Cow(线段树较易)
    递归实现排列型枚举
    文件输入输出文件
    【分治】逃亡
    折半查找法(二分)
    递归/非递归实现组合型枚举(全排列问题)
    9.25DAY1T2
    9.25DAY1T1
    POI2004[MOS] 贪心+DP
  • 原文地址:https://www.cnblogs.com/zwx655/p/12378178.html
Copyright © 2011-2022 走看看