LeetCode:Maximum Subarray
来源:互联网 发布:oracle数据库日志位置 编辑:程序博客网 时间:2024/06/06 04:22
题目:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
Example:
given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.
思路:
这道题就是让我们找到连续子串的最大和,我们可以用“动态规划”来解题。
我的思路就是维护两个变量sum(以第i+1个元素,即 nums[i] 为当前子串中的结尾的最大和) 和 max_sum(当前sum的最大值)。如果sum + nums[i] 比 nums[i] 本身还小的话,那么这个子串应该变为以 nums[i] 为开始元素(即当前子串只有nums[i] 一个元素),这样才是当前的最大和。它们的状态转移方程为:
sum = max(sum + nums[i], nums[i]);
max_sum= max(max_sum, sum);
代码:
class Solution {public: int maxSubArray(vector<int>& nums) { int len = nums.size(); int sum = nums[0]; int max_sum = nums[0]; for (int i = 1; i < len; i++) { sum = max(sum + nums[i], nums[i]); max_sum = max(max_sum, sum); } return max_sum; }};
复杂度分析:
时间复杂度:O(n)
空间复杂度:O(1)
阅读全文
0 0
- 【LeetCode】Maximum Subarray 和 Maximum Product Subarray
- LeetCode: Maximum Subarray
- LeetCode Maximum Subarray
- [Leetcode] Maximum Subarray
- LeetCode: Maximum Subarray
- leetcode 25: Maximum Subarray
- [LeetCode] Maximum Subarray
- [Leetcode] Maximum Subarray
- [LeetCode]Maximum Subarray
- [leetcode]Maximum Subarray
- LeetCode-Maximum Subarray
- [leetcode] Maximum Subarray
- LeetCode 45: Maximum Subarray
- LeetCode - Maximum Subarray
- LeetCode:Maximum Subarray
- LeetCode 53: Maximum Subarray
- 【leetcode】Maximum Subarray
- Leetcode Maximum Subarray
- MySql常用命令记录
- Spring中@Autowired注解、@Resource注解的区别
- android studio 提示IDE出现错误,或输入代码没有提示
- 17年双十一写的一堆废话
- POJ 1741 Tree(树分治+容斥原理+树的重心)
- LeetCode:Maximum Subarray
- 双重校验锁 -- Java并发编程中的陷阱
- Banner轮播模版
- 身份证之js获取性别 年龄 出生日期
- Python装饰器学习
- vue init 报错
- ubuntu安装eclipse
- ARM内核和架构理解
- j2ee的web项目的定时器,不用受到拦截器的拦截,因为根本不是http url请求