笔者在BAT从事技术研发多年,利用工作之余重刷leetcode,希望结合自己多年的实践经验,把算法讲的更清楚,更多原创文章欢迎关注公众号「代码随想录」。

题目地址

https://leetcode-cn.com/problems/maximum-subarray/

暴力解法

暴力解法的思路,第一层for 就是设置起始位置,第二层for循环遍历数组寻找最大值

时间复杂度:O(n^2)
空间复杂度:O(1)

class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int count = 0;for (int i = 0; i < nums.size(); i++) { // 设置起始位置count = 0;for (int j = i; j < nums.size(); j++) { // 每次从起始位置i开始遍历寻找最大值count += nums[j];result = count > result ? count : result;}}return result;}
};

贪心解法

贪心解法,其实不是很好理解, 看上面暴力的解法是两层for循环,那如何省掉一层for循环呢

其实暴力解法中设置起始位置这个for循环是可以省略掉的,这也是关键的一步,有了这个思路之后,就可以看一下代码了

时间复杂度:O(n)
空间复杂度:O(1)

class Solution {
public:int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int count = 0;for (int i = 0; i < nums.size(); i++) {count += nums[i];if (count > result) { // 相当于每次取各个终点的最大值result = count;}if (count <= 0) count = 0; // 相当于重置起点,因为遇到负数一定是拉低总体数值的}return result;}
};

更多精彩文章持续更新,可以微信搜索「 代码随想录」第一时间阅读,关注后有大量的学习资料和简历模板可以免费领取,本文 GitHub:https://github.com/youngyangyang04/leetcode-master 已经收录,欢迎star,fork,共同学习,一起进步。

leetcode [53]最大子序和/Maximum Subarray C++ 暴力解法和贪心解法相关推荐

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

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

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

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

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

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

  4. leetcode - 53. 最大子序和

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

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

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

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

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

  7. LeetCode 53最大子序和

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

  8. leetcode 53.最大子序和

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

  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. 面试数百名NLP工程师发现:90%以上是不合格的
  2. 半导体量子芯片开发获重要进展
  3. word从第3页开始设置页码为第一页_写论文、报告必会:快速让Word页码从第三页开始的方法...
  4. 迟到的2017年终总结与2018目标规划
  5. unity game和scene效果不一样_KTV装修设计:如何让消费者体验到不一样的KTV娱乐效果...
  6. java常见经典知识点汇总
  7. Centos6.4下安装mysql5.6.10
  8. Android Studio安装Flutter
  9. MFC开发IM-第十篇、MFC改变static text颜色
  10. 我的职业规划,大家给点意见吧!
  11. graphviz安装及使用
  12. android中颜色对应的值
  13. 【安装记录】如何在官网找到老版本的jdk,如 jdk-8u271-windows-x64
  14. 微机原理、计算机组成原理与计算机体系结构之间的关系
  15. 电力系统微型计算机继电保护试题及答案,电力系统微型计算机继电保护试题及答案(2002年4月)...
  16. 移动新魔百和M302A-YS代工_卡刷固件包
  17. Cesium开发:简单箭头画法
  18. Unity|一键复制log日志|小技巧
  19. 7-20 帅到没朋友
  20. IntelliJ IDEA初次创建简单的java项目--初学者使用详解

热门文章

  1. ASP.NET Web API 2基于令牌的身份验证
  2. (转)JAVA实现Windows拨号、IP切换
  3. Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构
  4. Vue中全局导入和按需导入的区别
  5. bzoj 3672 购票 点分治+dp
  6. 在 Linux 中怎样将 MySQL 迁移到 MariaDB 上
  7. Swift - 使用xib添加新界面
  8. 报错:1130-host ... is not allowed to connect to this MySql server
  9. Linux ftp命令
  10. TeamViewer订阅版上线,正式开售!