Leetcode之53. Maximum Subarray Easy
Leetcode 53 Maximum Subarray Easy
https://leetcode.com/problems/maximum-subarray/
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
分析:
本题虽然标的是一道easy题,但刚开始做我是没有思路的。那么,就思考,如果暴力解决这道题该怎么做?那就对每次遍历到的元素和它之前的连续元素进行求和,看是否大于目前的最大和值,时间复杂度为O(n^2)。在演草纸上做这个过程时,你就会发现,这么做效率不高:在遍历到当前元素做连续元素相加这个操作时,前一个元素做了类似操作,所以实际上可以利用前一个元素的计算结果。但是,这样依然不能减少时间复杂度,怎么办?还可以接着想,遍历到当前元素时,我们不必要对其之前的连续元素进行累加计算,只需要对之前产生最大累加和的连续元素的结果进行累加即可。这样,我们可以这么做:用一个变量来存放之前元素的最大累加和(注意,这里面必须包含前一个元素),用另一个变量来存放最大值这个结果。这个方法的时间复杂度是O(n)。程序可以这么写:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int curMax, result;
curMax = result = nums[];
int len = nums.size();
for (int i = ; i < len; ++i) {
curMax = curMax + nums[i] > nums[i] ? curMax + nums[i] : nums[i];
result = curMax > result ? curMax : result;
}
return result;
}
};
写到这里,我自己都没有想到就用动态规划的思想把这个题bugfree了。有时,看到别人想出一个好的方法也许并不是人家一开始就想到了,而是通过从简单开始分析,一点一点优化步骤,得到好的思路和方法。当然了,有些题目可以从完全不同的两个方向去解决,这时候换一种角度思考问题反而更重要。

Leetcode之53. Maximum Subarray Easy的更多相关文章
- [array] leetcode - 53. Maximum Subarray - Easy
leetcode - 53. Maximum Subarray - Easy descrition Find the contiguous subarray within an array (cont ...
- [Leetcode][Python]53: Maximum Subarray
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 53: Maximum Subarrayhttps://leetcode.co ...
- 【LeetCode】53. Maximum Subarray (2 solutions)
Maximum Subarray Find the contiguous subarray within an array (containing at least one number) which ...
- 【一天一道LeetCode】#53. Maximum Subarray
一天一道LeetCode系列 (一)题目 Find the contiguous subarray within an array (containing at least one number) w ...
- 【LeetCode】53. Maximum Subarray 最大子序和 解题报告(Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力解法 动态规划 日期 题目地址: https:/ ...
- LeetCode OJ 53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- [leetcode DP]53. Maximum Subarray
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 【Leetcode】53. Maximum Subarray
题目地址: https://leetcode.com/problems/maximum-subarray/description/ 题目描述: 经典的求最大连续子数组之和. 解法: 遍历这个vecto ...
- Leetcode No.53 Maximum Subarray(c++实现)
1. 题目 1.1 英文题目 Given an integer array nums, find the contiguous subarray (containing at least one nu ...
随机推荐
- Aizu - 1382 Black or White (分段决策,单调队列优化dp)
题意:给定只有黑白两种颜色的序列A,B,每次可以选择一段连续的长度不超过k的区间将其染成同一种颜色,求把序列A变成B所需的最小操作次数. 首先需要找出一些最优解的特征: 1.如果序列A的第一个颜色和B ...
- C#中使用ListView动态添加数据不闪烁(网上方法会出问题)
最近需要使用做一个动态行显示,所以就用到了ListView控件,在网上也查到了关于动态添加不闪烁的方式都是如下: 首先,自定义一个类ListViewNF,继承自 System.Windows.Form ...
- 特殊变量的处理(一)onehot&dummy
表述类目的变量通常,通常没有次序概念,且取值范围有限.例如性别行业信用卡类型.有些模型可以直接读类别变量(例如决策树).有些模型不能识别类别变量(例如回归模型,神经网络,有距离的度量模型(svn,kn ...
- struts2之登陆拦截
针对登录拦截功能,我们需要设置拦截哪些方法和不拦截哪些方法 action action类中,处理登录时,将用户.密码绑定到session ActionContext ac = ActionContex ...
- 洛谷P1372 又是毕业季I【数论】
题目:https://www.luogu.org/problemnew/show/P1372 题意: 在1~n之中找k个数,使得他们的最大公因数最大. 思路: 假设ans是答案,说明选择的k个数分别是 ...
- 如何利用新浪官方的短网址API接口实现T.cn短链接的压缩生成
短网址的实现原理就是有一个数据表会配置文件将短网址和实际网址进行对应,当请求某个短网址时,程序跳转到对应的实际网址上去,从而实现网址的访问.目前国内最稳定最好用的是新浪T.cn短链接. 之前新浪提供了 ...
- NIO学习总结
第一.NIO概述 java.nio 全称 java non-blocking IO,是指 JDK 提供的新 API.从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 N ...
- Android学习_注意事项
一. Fragment中加载ListView public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle ...
- 20175227张雪莹 2018-2019-2 《Java程序设计》第十一周学习总结
20175227张雪莹 2018-2019-2 <Java程序设计>第十一周学习总结 教材学习内容总结 第十三章 Java网络编程 URL类 一个URL对象通常包含最基本的三部分信息:协议 ...
- Nginx之HTTP过滤模块
1. HTTP 过滤模块 ngx_http_not_modified_module 仅对 HTTP 头部做处理.在返回 200 成功时,根据请求中 If-Modified-Since 或者 If-Un ...