首页 > 其他分享 >最大子数组和

最大子数组和

时间:2024-11-18 11:09:22浏览次数:1  
标签:最大 示例 int nums length 数组 dp

最大子数组和

题目

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组

是数组中的一个连续部分。

示例

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

思路

  • 使用动态规划的思想
  • 首先是dp数组的定义,dp[i]代表以nums[i]结尾的子串的最大和
  • 初始化dp[0] 就等于nums[0]
  • dp[i]要么就等于nums[i],要么等于dp[i-1] + nums[i],一个证明前面的小于0,所以就不加了,一个是前面的和大于0,就加上。
  • 最后返回的结果不是dp[nums.length],因为dp[nums.length]是以最后一个字母结尾的最大数组和。

代码实现

public int maxSubArray(int[] nums) {
    int[] dp = new int[nums.length];
    dp[0] = nums[0];
    int result = dp[0];
    for (int i = 1; i < nums.length; i++) {
        dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]);
        if (result < dp[i]) result = dp[i];
    }
    return result;
}

标签:最大,示例,int,nums,length,数组,dp
From: https://www.cnblogs.com/wwgroup/p/18552111

相关文章

  • 数组
    下面有关数组的叙述中,只有()是正确的:A)虽然不能对数组进行整体的赋值和IO等,但可以将整个数组作为参数传递给函数,函数也可以返回整个数组!B)C要求形参和相对应的实参都必须是类型相同的数组。C)形参数组和实参数组为同一数组,共同拥有一段内存空间。D)C语言规定数组名就是数......
  • 941. 有效的山脉数组
    题目自己写的classSolution{public:boolvalidMountainArray(vector<int>&arr){intl=0,r=1;boolup=true,change=false;if(arr.size()<3)returnfalse;if(arr[r]<arr[l])......
  • 代码随想录:长度最小的子数组
    代码随想录:长度最小的子数组现在不像考研那时候,每天时间都是固定的,以后可能还是以周为单位定目标比较好一点滑动窗口问题,之后记得和计算机网络里的滑动窗口对比,并且和背包问题对比classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){i......
  • STL之动态数组
    一、标准模板库(StandardTemplateLibrary,STL)是HP公司开发的一个C++模板库,包含一些常用的数据结构和算法。具有以下的组件:1.容器:容纳包含一组元素的对象。2.迭代器:提供访问容器的方法3.函数对象4.算法二、STL之向量——vector   vector是c++标准库提供的一个变长数......
  • 【C++笔记】一维数组元素处理
    目录1.插入元素方法代码2.删除元素方法代码3.交换元素方法代码1.插入元素方法概念:插入元素是指在数组的某个位置添加一个新元素,并将原来的元素向后移动。例如,将5插入到数组[1,2,4,6]的第二个位置,结果变为[1,5,2,4,6]。关键点:确定插入位置:首先要明......
  • 最大加权矩形
    最大加权矩形题目描述为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没有马上答应他们,而是先给她们出了一道数学题,并且告诉她们:你们能获得的运动场地的......
  • P1719 最大加权矩形
    题目描述为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没有马上答应他们,而是先给她们出了一道数学题,并且告诉她们:你们能获得的运动场地的面积就是你们能......
  • luogu P1719 最大加权矩形
    最大加权矩形题目描述为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没有马上答应他们,而是先给她们出了一道数学题,并且告诉她们:你们能获得的运动场地的......
  • 一文搞懂!数组作为函数输入如何声明?
    一维数组函数形参定义:voidarray_print(inta[])一维数组指针函数形参定义:voidarray_print(int*a)二维数组函数形参定义://必须指明数组的列数,数组的行数没有太大关系//因为函数调用时传递的是一个指针,它指向由行向量构成的一维数组//所以以下两种声明方式都可以......
  • [leetcode]485. 最大连续1的个数(Java实现)
    题目给定一个二进制数组 nums ,计算其中最大连续 1 的个数。示例1:输入:nums=[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续1,所以最大连续1的个数是3.示例2:输入:nums=[1,0,1,1,0,1]输出:2解法1嗯,速度有进步我感觉我想出这个思路还是挺快的,两......