首页 > 其他分享 >BM72 连续子数组的最大和

BM72 连续子数组的最大和

时间:2023-10-29 20:33:51浏览次数:25  
标签:int 复杂度 BM72 连续 数组 array dp

描述

输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,子数组最小长度为1。求所有子数组的和的最大值。 数据范围: 1 <= n <= 2\times10^51<=n<=2×105
-100 <= a[i] <= 100−100<=a[i]<=100
要求:时间复杂度为 O(n)O(n),空间复杂度为 O(n)O(n) 进阶:时间复杂度为 O(n)O(n),空间复杂度为 O(1)O(1)

示例1输入:

[1,-2,3,10,-4,7,2,-5]
返回值:
18
说明:
经分析可知,输入数组的子数组[3,10,-4,7,2]可以求得最大和为18    
 public int FindGreatestSumOfSubArray(int[] array) {
        if(array.length==1){
            return array[0];
        }
        int[] dp=new int[array.length];
        dp[0]=array[0];
        int ans=array[0];
        for(int i=1;i<array.length;i++){
            dp[i]=Math.max(dp[i-1]+array[i],array[i]);
            ans=Math.max(ans,dp[i]);
        }
        return ans;
    }

  

标签:int,复杂度,BM72,连续,数组,array,dp
From: https://www.cnblogs.com/yingpu/p/17796389.html

相关文章

  • java 数组常见问题
    当访问了数组中不存在的索引,就会引发索引越界异常。索引越界异常原因:访问了不存在的索引避免:索引的范围最小索引:0最大索引:4(数组的长度-1)......
  • java 动态数组初始化
    动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。格式:数据类型[]数组名=new数据类型[数组长度];示例:int[]arr=newint[3];publicclassday8_06{publicstaticvoidmain(String[]args){/*定义一个数组,用来存班级中50个学生的姓名......
  • java 数组遍历
    数组遍历:将数组中所有的内容取出来,取出来之后可以(打印,求和,判断..)注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印!publicclassday8_04{publicstaticvoidmain(String[]args){//定义数组int[]arr={1,2,3,4,5,6,7,8,9,10};......
  • 将所有的零移动到数组的末尾并保持非零元素的顺序的两种思路及JAVA代码实现
    //思路2:从前向后遍历数组,将非0数字放入一个集合中publicstaticvoidmoveZeroes02(int[]nums){if(nums==null||nums.length==0){return;}if(nums.length==1){return;}//......
  • java 数组定义与访问
    数组指的是一种容器,可以用来存储同种数据类型的多个值数组初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程完整格式:数据类型[]数组名=new数据类型[]{元素1,元素2,元素3...}示例:int[]array=newint[]{11,22,33};double[]array2=newdouble[]{......
  • Linux shell编程学习笔记16:bash中的关联数组
    上一节我们探讨了普通的数组,即使用数字下标来索引数组中不同的元素的数组,也可以称之为索引数组。相比纯粹的数字,字符串不仅能表明含义,也更便于记忆使用,于是就有了关联数组。一、关联数组概述bash从4.0开始支持关联数组,关联数组可以使用可以使用任意的字符串、或者整数作为下标来......
  • 【模板】自动清空数组 acarray
    这个板子有什么意义?检测对编译器的了解程度。template<classT,intN>structacarray{Tval[N],rev;inttim,vis[N];structrefer{int*tim,*vis;T*val,*rev;refer()=delete;refer(acarray&a,size_tpos):tim(&a.tim),vi......
  • 重新排列数组
    我的错误:将问题中引入了if语句,是问题变复杂了优解:int*shuffle(int*nums,intnumsSize,intn,int*returnSize){  int*ret=(int*)malloc(sizeof(int)*n*2);  *returnSize=numsSize;  for(inti=0;i<n;++i){    ret[2*i]=nums[i];......
  • java 数组浅拷贝与深拷贝
    publicclassdemo{publicvoidfunc(int[]nums){int[]tempNums=newint[]{1,1,1,1,1,1};//浅拷贝//nums=tempNums;//深拷贝for(intj=0;j<nums.length;j++){nums[j]=tempNums[......
  • 数组的静态初始化和动态初始化
    publicclassArrayDemo02{publicstaticvoidmain(String[]args){//静态初始化:创建+赋值int[]a={1,2,3,4,5,6,7,8};System.out.println(a[0]);//动态初始化:包含默认初始化int[]b=newint[10];b[0]=10;......