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

Leetcode 53. 最大子数组和

时间:2024-02-27 10:12:24浏览次数:23  
标签:最大 nums int dai 53 数组 Leetcode dp

题目

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

输入输出样例

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

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

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

动态规划子问题一定要满足无后效性,大佬的讲解
https://leetcode.cn/problems/maximum-subarray/solutions/9058/dong-tai-gui-hua-fen-zhi-fa-python-dai-ma-java-dai

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        vector<int> dp(nums.size(),0);
        //dp[i]是以nums[i]结尾的最大和连续子数组
        dp[0] = nums[0];
        for(int i=1;i<nums.size();i++){
            dp[i] = max(dp[i-1]+nums[i],nums[i]);
        }
        int ans=dp[0];
        for(int i=1;i<dp.size();i++){
            ans = max(ans,dp[i]);
        }
        return ans;
    }
};

标签:最大,nums,int,dai,53,数组,Leetcode,dp
From: https://www.cnblogs.com/neromegumi/p/18036289

相关文章

  • 【14.0】JavaScript之数组
    【一】什么是数组数组是一组有序的数据集合,数组内部可以存放多个数据,不限制数据类型,数组的长度可以动态调整数组类似于Python当中的列表【二】创建数组创建数据的最简单方式是通过字面量vararr=[]也可以通过数组对象去创建vararr=newArray()存放多个......
  • JavaScript 实现JSON 对象数组以某个属性进行分组处理
    JavaScript实现JSON对象数组以某个属性进行分组处理要在JavaScript中对JSON对象数组的某个属性进行分组处理,你可以使用一个对象来存储分组后的结果。下面是一个简单的示例,演示了如何对JSON对象数组中的某个属性进行分组处理:假设我们有一个JSON对象数组,每个对象都有ca......
  • Leetcode 76. 最小覆盖子串
    题目描述(难度hard)给你一个字符串S、一个字符串T,请在字符串S里面找出:包含T所有字母的最小子串。示例:输入:S="ADOBECODEBANC",T="ABC"输出:"BANC"说明:如果S中不存这样的子串,则返回空字符串""。如果S中存在这样的子串,我们保证它是唯一的答案。解题思路......
  • P1653 [USACO04DEC] Cow Ski Area G
    原题链接题解非常抽象的缩点大概思路:搜索缩点成有向图,求该点的入度和出度,最后答案一定是\(max(in,out)\)总之很抽象code#definelllonglong#include<bits/stdc++.h>usingnamespacestd;inlinevoidread(ll&x){x=0;llflag=1;charc=getcha......
  • LeetCode二分查找 swift 面试
     funcbinarySearch(_array:[Int],_target:Int)->Int?{varleft=0varright=array.count-1whileleft<=right{letmid=(left+right)/2ifarray[mid]==target{returnmid......
  • day42 动态规划part4 代码随想录算法训练营 46. 携带研究材料- 一维数组写法
    题目:46.携带研究材料我的感悟:一维是二维的压缩理解难点:倒序遍历j因为每轮的数字是由左上决定的。遍历的时候,从右侧遍历,是不会影响左侧的。听课笔记:代码示例:defbag_problem(weight,value,bagWeight):#初始化dp=[0]*(bagWeight+1)fori......
  • 34. 在排序数组中查找元素的第一个和最后一个位置C
    /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*searchRange(int*nums,intnumsSize,inttarget,int*returnSize){*returnSize=2;int*a=(int*)malloc(sizeof(int)*2);a[0]=-1;a[1]=-1;inthead=0,......
  • 前端get请求传递数组型参数时的处理方式
    场景后端get接口设计接受数组型查询参数时,只接受重复的query格式,如arr=[1,2,3],那么在query里的参数格式需要是a=1&a=2&a=3前端get请求直接传数组会默认处理为a[]=1&a[]=2&a[]=3,后端无法识别(恼),传json字符串和join拼接后端都不同意如果直接在url中做参数拼接,实在是又蠢又费力......
  • Leetcode刷题第十四天-动态规划
    674:最长连续递增序列链接:674.最长连续递增序列-力扣(LeetCode)1classSolution:2deffindLengthOfLCIS(self,nums:List[int])->int:3n=len(nums)4dp=[1]*n5if(n<1):return06foriinrange(1,n):7if......
  • #分块,二分#洛谷 5356 [Ynoi2017] 由乃打扑克
    题目支持区间加和区间查询第\(k\)小分析分块之后给每个整块排序,这样修改的时候整块打标记,散块直接分开把需要加的部分暴力加之后归并,就是\(O(\sqrt{n})\)的查询的话,如果只有散块直接归并出结果,否则二分答案,加上小块合并成的整块,相当于是整体二分,就是\(O(\sqrt{n}\log{a_......