LeetCode: Maximum Subarray
来源:互联网 发布:跟着龚琳娜学唱歌 淘宝 编辑:程序博客网 时间:2024/06/14 06:20
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For 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
.
class Solution {public: int maxSubArray(int A[], int n) { int max = INT_MIN, local = 0; for(int i = 0; i < n; i++) { local = std::max(A[i], local+A[i]); max = std::max(local, max); } return max; }};
Round 2:
class Solution {public: int maxSubArray(int A[], int n) { if(n == 0 ) return 0; int preMax = A[0], max = A[0]; for(int i = 1; i < n; i++) { int curMax = std::max(A[i], A[i]+preMax); if(curMax > max) max = curMax; preMax = curMax; } return max; }};
Divide and conquer:
class Solution {public: int maxSubArray(int A[], int n) { return mergeSort(0, n-1, A); }private: int mergeSort(int l, int r, int A[]) { if(l == r) return A[l]; int mid = (l+r)/2; int lmax = mergeSort(l, mid, A); int rmax = mergeSort(mid+1, r, A); int midMaxL = 0; int sum = 0; for(int i = mid-1; i >= l; i--) { sum += A[i]; if(sum > midMaxL) midMaxL = sum; } int midMaxR = 0; sum = 0; for(int i = mid+1; i <= r; i++) { sum += A[i]; if(sum > midMaxR) midMaxR = sum; } return std::max(std::max(lmax, rmax), midMaxL+midMaxR+A[mid]); }};
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
- Android获取进程是否在后台注意事项
- SQL 错误: ORA-12910
- 通过位运算的异或运算符加密解密
- android的Message机制
- RecyclerView高度随Item自适应
- LeetCode: Maximum Subarray
- 论证是一门学问 如何让你的观点有说服力-13 规则13 列出信息来源
- 基于公里格网的地震灾情快速评估系统
- 链表有关的常见面试题
- 归档模式和非归档模式
- linux 如何查找命令的路径
- 久别,归来
- c++stack容器介绍
- cvc-complex-type.2.4.a: Invalid content was found starting with element