【LeetCode笔记】53. 最大子序和(Java、动态规划)
文章目录
- 题目描述
- 代码 & 思路
题目描述
- 经典题目了,多种解法(不过目前只学了一种,暴力不算)
代码 & 思路
这块基本上算是写给自己看的了。。写得不好,如果想学这种方法最好还是去leetcode题解看。
- sum = num:因为在上一次循环结尾,就已经取得了i-1结尾的子序的最大和,也就是[0, i-1]的任务已经完成了,继续使用无意义,因为sum < 0的情况下,只会对后面的子序带来负增益
- 例子1:1,2 ,-4,1, -1,首先取到最大值【1,2】,然后【1,2,-4】时,【1,2,-4】已经无意义,接下来只要对剩下的【1,-1】进行判断即可。
原因:首先从2开始的【2,-4】肯定不如之前的【1,2,-4】大,因为之所以2之前的【1】能连上2,就是因为【1】这一部分是不小于0的,有正增益。然后之所以不能取【2,-4】再连上后面的【1,-1】,是因为这肯定还不如【1,2,-4】,原理基本上同上(前面的起码还是正增益,舍掉了得比现在还小)。
class Solution {public int maxSubArray(int[] nums) {int ans = nums[0];int sum = 0;// 使用动态规划:时间复杂度O(n)for(int num : nums){// 取值,然后舍掉(因为不如不加)if(sum < 0){sum = num;}// 否则继续下去else{sum += num;}ans = Math.max(ans,sum);}return ans;}
}
- 时间复杂度O(n),一次遍历结束
- 空间复杂度O(1)
【LeetCode笔记】53. 最大子序和(Java、动态规划)相关推荐
- LeetCode 53. 最大子序和(动态规划)
文章目录 1. 题目描述 2. 解题 2.1 暴力求解 2.2 动态规划 1. 题目描述 题目链接:https://leetcode-cn.com/problems/maximum-subarray/ ...
- LeetCode 题 - 53. 最大子序和 python解法
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续 ...
- leetcode之53.最大子序和
题目详情 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: ...
- 学渣的刷题之旅 leetcode刷题 53.最大子序和(动态规划,贪心法)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4, ...
- 【LeetCode】53.最大子序和
题目 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 题解 方法1:暴力法 算法 暴力地用两重循环遍历所有情况 代码 class Solution ...
- leetcode 53. 最大子序和 动态规划解法、贪心法以及二分法
题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子 ...
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...
- leetcode - 53. 最大子序和
53. 最大子序和 - 动态规划 -------------------------------------- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), ...
- 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和
贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
最新文章
- Windows 8.1 Preview(Windows Blue)预览版简体中文官方下载(ISO完整版镜像)
- 关闭iptables和SELINUX
- 初学者python用哪个版本好-什么是Python?初学者应该学python哪个版本?
- python常用的日期时间模块
- 3DSlicer4:模块管理(二)场景视图、体数据、体绘制
- 数据可视化(BI报表的开发)第三天
- 宣布EAXY:在Java中简化XML
- android adb源码分析(1)
- day4 数组的初始化和练习
- 代码对比工具 Top5
- 浅谈css中一个元素如何在其父元素居中显示
- Odoo12有那些功能?『江苏odoo云整理』
- 大华摄像机RTSP断流
- 外卖红包返利小程序源码系统
- html table最小宽度,table宽度比tbody多1
- 微信小程序---修改背景颜色和单个页面的背景颜色
- 守护进程——解放本地PC
- 人工智能的三个发展阶段
- 校园二手物品交易网站毕业设计
- 单片机编程软件很简单(23),keil单片机编程软件调试stm32
热门文章
- 卡苹果6plus在线_@哈尔滨家长:学生卡初次申办,需要到线下网点办理!
- vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
- python中的画布背景设置_教你用python画图—Turtle详细教程
- 征服用计算机弹法,征服WIN7
- 北京联合大学计算机学院在哪个校区,北京联合大学各校区联系地址大全
- python程序员怎么面试_Python程序员面试,这些问题你必须提前准备!
- latex填充段落之间的留白
- python from __future__ import division
- 安卓系统内 的 安卓虚拟机
- 安卓逆向_3 --- 篡改apk名称和图标、修改包名实现应用分身、修改资源去广告、去除re管理器广告