第一次提交成功

class Solution {
public:int maxSubArray(vector<int>& nums) {if (nums.size() == 1) return nums[0];//int sum = -1;vector<int> submax;for (int i = 0; i < nums.size(); i++){if (sum >= 0){sum = sum + nums[i];submax.push_back(sum);}else{sum = nums[i];submax.push_back(sum);}}int max = submax[0];for (int i = 1; i < submax.size(); i++) {if (max < submax[i]) max = submax[i];}return max;}
};

这里我的思路是包含当前nums[i]的连续子数组的最大和(按序号只算i左边的),所以当前一个nums[i-1]处的最大值是负数时,nums[i]处的最大值就是nums[i]本身,当nums[i-1]处的最大值大于零,nums[i]处的最大值就是sum + nums[i]

对于nums中的第一个元素nums[0],我利用初始sum = -1,在循环中进入else把第一个位置最大值修改为nums[i]

第二次尝试:

其实对于上面的第二个循环并不必要,完全可以在第一个中进行。

class Solution {
public:int maxSubArray(vector<int>& nums) {if (nums.size() == 1) return nums[0];//int max = nums[0]; int sum = -1;for (int i = 0; i < nums.size(); i++){if (sum >= 0){sum = sum + nums[i];}else{sum = nums[i];}if (sum > max) max = sum;}return max;}
};

虽然这个sum初始化为-1看起来很巧妙,但是却有一点本末倒置,毕竟这是一个求和问题,sum初始化为0要更易于理解。

第三次尝试:先加为敬!

class Solution {
public:int maxSubArray(vector<int>& nums) {int max = nums[0]; int sum = 0;for (int i = 0; i < nums.size(); i++){sum += nums[i];if (sum > max) max = sum;if (sum < 0) sum = 0;}return max;}
};

判断只有一个元素也是多余的!顶多判断一个空数组,但是题目中说了至少有一个值。

LeetCode 53. 最大子序和(Maximum Subarray)相关推荐

  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. 最大子序和(C语言)

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

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

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

最新文章

  1. 会Python的大学生了不起吗?是的,简直开挂!
  2. mysql服务器的启动方式有哪几种_Mysql启动的方式(四种)
  3. js获取url参数值
  4. springboot获取静态图片路径_SpringBoot中的全局异常处理你确定你真的知道吗?
  5. 南京大学计算机科学系照片,欧拉图-南京大学计算机科学与技术系.pdf
  6. as3 浅复制 深复制
  7. 一些比较少用但比较有用的linux命令备忘
  8. 数据仓库的 RDBMS 性能优化指南
  9. 1388C. Uncle Bogdan and Country Happiness
  10. Git初学札记(四)————Git Push的常规操作与Pull冲突解决
  11. Structural Deep Clustering Network 基于GNN的深度聚类算法 WWW2020
  12. 【知识图谱系列】自适应深度和广度图神经网络模型
  13. 大众点评信息流基于文本生成的创意优化实践
  14. python猴子吃桃子的问题_张含韵忍不住一吃再吃的这种湖南美食,你可能买到假货...
  15. 灵飞经4 西城八部 第二十章 倒行逆施(五)
  16. 2017 百度之星 复赛 Valley Numer(数位dp)
  17. 郭静:新交规火了蓝牙耳机
  18. vba 跳出for循环_ExcelVBA的三重FOR循环退出
  19. 小程序 canvas 实现电子签名
  20. 【从“元宇宙”大热中看隐私安全如何赋能创新】

热门文章

  1. 白皮书下载 |《产品用户体验的数据化评估》
  2. PPT 下载 | 神策数据杜明翰:数据赋能产品的 3 个锦囊
  3. Memcached 1.5.13 发布,支持 TLS
  4. Flutter React编程范式实践
  5. Citrix XenServer XenCenter 警报
  6. 手写一个jsonp实现
  7. Java 7之基础 - 强引用、弱引用、软引用、虚引用
  8. 认真理解 oom killer 备忘
  9. puppet结构图一例
  10. 如何区分SCSI卡和RAID卡?