力扣53. 最大子数组和(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
提示:
1 <= nums.length <= 105-104 <= nums[i] <= 104
常规dp的时间复杂度为O(n),要是比赛可能会超时,因为这道题更适合分治
1 class Solution {
2 public:
3 int dp[100005]; //dp[i]表示nums[i]附近的最大子数组和
4 int maxSubArray(vector<int>& nums) {
5 memset(dp,0,sizeof(dp));
6 dp[0]=nums[0];
7 int mmax=dp[0];
8 for (int i=1;i<nums.size();++i){
9 dp[i]=max(nums[i],dp[i-1]+nums[i]); //若nums[i]>dp[i-1]+nums[i]说明添加nums[i]为负收益,从nums[i]开始重新计算最大和
10 mmax=max(dp[i],mmax);
11 }
12 return mmax;
13 }
14 };
力扣53. 最大子数组和(dp)的更多相关文章
- 【力扣】两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2: 输入:nums1 = [4,9,5], nu ...
- 力扣350. 两个数组的交集 II
原题 1 class Solution: 2 def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]: 3 di ...
- LeetCode HOT 100:最大子数组和
题目:53. 最大子数组和 题目描述: 给你一个整数数组,在该数组的所有子数组中,找到一个子数组中所有元素相加和最大,返回这个最大的和.子数组就是一个数组中,由一个或几个下标连续的元素,组成的小数组, ...
- 力扣算法JS LC 59-螺旋矩阵2,LC 152-乘积最大子数组
LC 59-螺旋矩阵2 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 1: 输入:n = 3输出:[[1,2 ...
- Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray)
Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. ...
- [leetcode]53. Maximum Subarray最大子数组和
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- [LeetCode] 53. Maximum Subarray 最大子数组
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- 力扣152,53题,最大子序列求和and积
本内容为最大子序列的求和和求积.采用DP的思路, 当前值加上小于之前值,则从该节点重新算起. 这个代码只能返回其结果值,但不能返回最后的子序列(待修改). class Solution: def ma ...
- [LeetCode] 53. Maximum Subarray 最大子数组 --动态规划+分治
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- LeetCode(力扣)——Search in Rotated Sorted Array2 搜索旋转排序数组 python实现
题目描述: python实现 Search in Rotated Sorted Array2 搜索旋转排序数组 中文: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0 ...
随机推荐
- JZOJ 5460. 士兵训练
题目 \(1\le n,q \le 2\cdot {10}^5,0\le b_i,l_i \le {10}^9,b_i \ge 1,1 \le S_i \le n\) \(Solution\) 这题很 ...
- GetShell 之:利用 SQLServer GetShell
GetShell 之:利用 SQLServer GetShell 目录 GetShell 之:利用 SQLServer GetShell 1 SQLServer 基础操作 2 SQLServer 利用 ...
- 随时代变迁而进化的治疗策略不断提高RA无药缓解机会[EULAR2015_SAT0058]
随时代变迁而进化的治疗策略不断提高RA无药缓解机会 SAT0058 DMARD-FREE SUSTAINED REMISSION IN RHEUMATOID ARTHRITIS: AN OUTCOME ...
- 数据结构和算法day1(Java)
1.什么是数据结构? 数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据. 1.2.数据结构的分类: 逻辑结构 和物理结构 逻辑结构: 集合结构(无关系).线性结构(一对一).树形 ...
- 添加material ui库
ng add @angular/material 自定义预构建主题 ? Choose a prebuilt theme name, or "custom" for a custom ...
- 【调试】ftrace(一)基本使用方法
简介 Ftrace是Linux Kernel的官方tracing系统,支持Function trace.静态tracepoint.动态Tracepoint的跟踪,还提供各种Tracer,用于统计最大i ...
- fabric学习笔记9
fabric学习笔记9 20201303张奕博 2023.1.20 Python Web3 与智能合约的交互 开发合约,或者开源合约,都会有一份该合约的ABI JSON文件 ABI文件包括了智能合约的 ...
- c++获取类型信息
获取类型信息 typeid typeid运算符用来获取一个表达式的类型信息. 对于基本类型数据, 类型信息比较简单, 主要指数据的类型; 对于对象(类类型的数据), 类型信息指: 对象所属的类, 所包 ...
- call, apply,bind的区别与用法
call, apply,bind的区别 相同点:都可以用来改变this指向 不同点: call, apply:传参方式不同: ...
- Spring的AOP源码解析(一)
Spring AOP 使用介绍,从前世到今生 前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出 ...