题目链接
法一:枚举
双重for循环暴力枚举
时间复杂度:O(n^2)

法二:动态规划
时间复杂度:O(n)
1、构建状态转移方程
假设以nums数组中第i个位置结尾的最大子序和为P(i)
那么以i+1位置结尾的最大子序和就只有两种选择P(i)+nums[i+1]、nums[i+1]。
2、当Pi>0时,P(i+1)=P(i)+nums[i+1],否则P(i+1)=nums[i+1],并设一个变量Max随着循环记录更大的P值,最后返回。
3、由于第0个位置前面没有P(-1),所以P与Max的初始值需手动设置,并且从数组的第二个值开始遍历。

C代码

int maxSubArray(int* nums, int numsSize){int P=nums[0],Max=P;for(int i=1;i<numsSize;i++){if(P>0) P=P+nums[i];else P=nums[i];if(P>Max) Max=P;}return Max;
}

Java代码

class Solution {public int maxSubArray(int[] nums) {int P=nums[0],Max=P,numsSize=nums.length;for(int i=1;i<numsSize;i++){if(P>0) P=P+nums[i];else P=nums[i];if(P>Max) Max=P;}return Max;}
}

补充:不使用max函数是因为此处调用函数的时间效率没有if-else高。

Leetcode-53:最大子序和相关推荐

  1. leetcode 53. 最大子序和 动态规划解法、贪心法以及二分法

    题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...

  2. leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别

    这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...

  3. leetcode - 53. 最大子序和

    53. 最大子序和 - 动态规划 -------------------------------------- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), ...

  4. LeetCode 53. 最大子序和(动态规划)

    文章目录 1. 题目描述 2. 解题 2.1 暴力求解 2.2 动态规划 1. 题目描述 题目链接:https://leetcode-cn.com/problems/maximum-subarray/ ...

  5. LeetCode 53:最大子序和解题以及优化思路(第一次独立刷题记录)

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 ...

  6. LeetCode 53最大子序和

    力扣 思路: 「连续」是关键字,连续很重要,不是子序列. 动态规划 详细解答请参考力扣 定义dp数组:        dp [i] 表示以nums[i]结尾的最大连续子数组的和 状态转移方程:    ...

  7. leetcode 53.最大子序和

    难度:简单 频率:159 题目 给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 解题思路 :动态规划(贪心) 解题方法: 1.对数组进行遍历 2.有 ...

  8. LeetCode 53. 最大子序和(Maximum Subarray)

    第一次提交成功 class Solution { public:int maxSubArray(vector<int>& nums) {if (nums.size() == 1) ...

  9. leetcode 53. 最大子序和(C语言)

    题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...

  10. [leetcode] 53.最大子序和

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释: ...

最新文章

  1. 每天一道算法题(24)——自定义幂函数pow
  2. 基于Xml 的IOC 容器-获得配置路径
  3. Codeforces Round #627 (Div. 3) E. Sleeping Schedule dp
  4. 【转】可道云kodexplorer搭建私有云后的配置优化
  5. java能调用python吗_如何使用运行时在Java中调用python程序 - java
  6. 洛谷P3405 [USACO16DEC]Cities and States省市
  7. OWIN之中间件用法示例
  8. 国外html游戏发展历史,17个国外游戏行业的网页设计欣赏
  9. 鸿蒙系统对小米的影响,“小米用鸿蒙系统”乌龙会对后续有影响吗
  10. ajax离开页面方法,jQuery中ajax调用当前页面方法
  11. maven profiles配置_nexus3搭建maven私服(完整版)
  12. 江山如画 中国多少绝色
  13. TSC打印机,使用java打印二维码
  14. Android、Symbian系统手机通讯录和Google Gmai同步
  15. 分享一个在沪深300下获得146.56%超额收益的策略
  16. 解决Tortoise git没有红色、绿色勾勾的问题
  17. 按计算机应用领域分类,按计算机用途分类
  18. rebase详解——非常精髓
  19. 神兽大厅源码搭建SLB最佳实践
  20. JSON Shema 校验JSON内容

热门文章

  1. 变压器相邻公交站 候车人提心吊胆[图]
  2. [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及
  3. [Python图像处理] 十八.图像锐化与边缘检测之Scharr算子、Canny算子和LOG算子
  4. 【数据结构与算法】之深入解析“修剪二叉搜索树”的求解思路与算法示例
  5. Git之深入解析如何将项目迁移到Git
  6. HarmonyOS之常用布局AdaptiveBoxLayout的使用
  7. 数据结构和算法 —— 图
  8. 征战蓝桥 —— 2013年第四届 —— C/C++A组第3题——振兴中华
  9. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1061:求整数的和与均值
  10. 使用C++实现YUV格式图像与RGB格式图像之间相互转换