题目描述

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例

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

提示

1 <= nums.length <= 3 * 104
-105 <= nums[i] <= 105

解题思路

贪心算法
temp是一段连续元素之和,temp<0则舍弃,更新temp为nums[i];
temp>0则继续加
ret是最大值

代码

int maxSubArray(int* nums, int numsSize){int temp = 0, ret = nums[0];for(int i = 0; i < numsSize; i++){temp = fmax(temp + nums[i], nums[i]);ret = fmax(temp, ret);}return ret;}
class Solution {public:int maxSubArray(vector<int>& nums) {int temp  = 0, ret = nums[0];for(int x : nums){temp = fmax(x, temp + x);//fmax返回两个浮点数中较大的浮点数//temp从0开始,fmax返回x说明temp<0,应该舍弃;返回temp + x说明可以继续找下一项ret = fmax(temp, ret);//更新最大值}return ret;}
};

时间复杂度:O(N) 遍历了一次数组
空间复杂度:O(1) 使用了常数变量

链接

力扣53.最大子序和 多种方法相关推荐

  1. 力扣53. 最大子序和

    给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 思路:每个循环中,sum表示以nums[i]结尾的最大子序和,res表示目前得到的最大子序和.当 ...

  2. 力扣217.存在重复元素 使用多种方法

    题目描述 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false . 示例 示例 1: 输入: [1,2,3, ...

  3. 力扣53. 最大子数组和(JavaScript)

    //返回最大和//当前和小于0时,从下一个开始重新累计 var maxSubArray = function(nums) {let sum=0let result=-Infinity //最小值for ...

  4. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

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

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

  6. 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和

    贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...

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

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

  8. leetcode - 53. 最大子序和

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

  9. leetcode学习记录5——53.最大子序和

    leetcode学习记录 leetcode学习记录五 最大子序和 解题思路 代码 leetcode学习记录五 最大子序和 难度:简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数 ...

最新文章

  1. “我的开源项目被威胁了!”
  2. 自动化生成 Openstack 新项目开发框架
  3. 简单一招搞定 three.js 屏幕适配
  4. URLClassLoader的使用
  5. php下拉上滑分页,Flutter实现下拉刷新 上拉分页加载更多
  6. 【Redis】3、Redis集群部署
  7. 玩转linux 中间的yum 命令
  8. C++primer 9.5.5节练习
  9. 快速了解什么是RSA加密算法
  10. 李航《统计学习方法》第三章课后答案链接
  11. 单分子荧光原位杂交(smFISH)
  12. UGUI的表格布局组件
  13. mysql的安装包,可直接下载5.6.43
  14. UCINET软件使用简介——主菜单简介2
  15. 开关电容共模反馈学习
  16. 上班太无聊,我要考证 之 程序员考证
  17. oracle认证071和061,别只为Oracle Database 18c的发布而兴奋了, 看一看你的Oracle认证考试到期了吗?...
  18. apple授权登录(服务端)
  19. 有序的uuid(32位)
  20. 深入浅出Flask PIN

热门文章

  1. mysql数据库设计原则_mysql数据库设计总结
  2. linux Tcpdump 抓包 win大小异常
  3. DML和DQL 总结
  4. [CF718C] Sasha and Array
  5. C++ Primer学习笔记(一)
  6. 团队开发冲刺1.2(2015.5.10)
  7. arguments.callee的临时指向特性
  8. 安装服务器选择什么系统盘,云服务器ecs选择什么系统盘
  9. uuid和自增_mysql表用自增id还是uuid
  10. (41)时钟组Clock Group介绍