[LintCode]Maximum Subarray Difference
来源:互联网 发布:网络授课怎么赚钱 编辑:程序博客网 时间:2024/06/06 03:47
Solving this question by O(n) time w/ O(n) space. The basic idea is to find a appropriate cut let the difference become largest.
We keep track local max, local min, left max, left min, and right min, right max.
class Solution {public: /** * @param nums: A list of integers * @return: An integer indicate the value of maximum difference between two * Subarrays */ int maxDiffSubArrays(vector<int> nums) { // write your code here if(nums.empty()) return 0; int n = nums.size(), localMax = 0, localMin = 0, res = INT_MIN; vector<int> leftMax(n,0); vector<int> leftMin(n,0); for(int i = 0; i<n; ++i){ localMax = max(nums[i], nums[i] + localMax); localMin = min(nums[i], nums[i] + localMin); if(i == 0){ leftMax[i] = localMax; leftMin[i] = localMin; }else{ leftMax[i] = max(leftMax[i-1], localMax); leftMin[i] = min(leftMin[i-1], localMin); } } localMax = 0, localMin = 0; int rightMax = 0, rightMin = 0; for (int i = n-1; i>0; --i) { localMax = max(nums[i]+localMax, nums[i]); localMin = min(nums[i] + localMin, nums[i]); if(i == n-1){ rightMax = localMax; rightMin = localMin; }else{ rightMax = max(localMax, rightMax); rightMin = min(localMin, rightMin); } res = max(res, max(abs(rightMax - leftMin[i-1]),abs(leftMax[i-1]-rightMin))); } return res; }};
0 0
- Lintcode - Maximum Subarray Difference
- [LintCode]Maximum Subarray Difference
- [LintCode]Maximum Subarray Difference
- ***[Lintcode]Maximum Subarray Difference 最大子数组差
- Maximum Subarray Difference
- Maximum Subarray Difference Solution
- #45 Maximum Subarray Difference
- Maximum Subarray Difference
- Lintcode - Maximum Subarray II
- Lintcode - Maximum Subarray III
- [Lintcode]Maximum Subarray
- LintCode:Maximum Subarray III
- lintcode: Maximum Subarray
- lintcode: Maximum Product Subarray
- [LintCode]Maximum Average Subarray
- [LintCode]Maximum Subarray III
- Maximum Product Subarray--lintcode
- Lintcode 617:Maximum Average Subarray
- git常用配置及别名设置
- 实习整理(五)
- Android 版本platform 与api的对应关系
- C++—特殊成员函数
- 韩顺平Linux笔记(六)——linux分区
- [LintCode]Maximum Subarray Difference
- 蓝桥杯——算法训练 出现次数最多的整数
- 面试之java基础
- 通过RS232发送和接收短信(一)
- 多线程
- Tomcat 源码分析
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- java基础面试知识点小结
- 过滤器