博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode-最大子数组差
阅读量:6173 次
发布时间:2019-06-21

本文共 1186 字,大约阅读时间需要 3 分钟。

给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。

返回这个最大的差值。

您在真实的面试中是否遇到过这个题? 
Yes
例子

给出数组[1, 2, -3, 1]。返回 6

注意

子数组最少包括一个数

挑战

时间复杂度为O(n)。空间复杂度为O(n)

标签 
相关题目 

分析:这题还是有点难度的感觉,首先直觉是能够套用求最大字数组和的代码,其次。求差的绝对值最大,那么求出子数组和的最大最小值。然后相减即可,可是有可能是左边最大右边最小,也可能是左边最小右边最大。

代码:

class Solution {public:    /**     * @param nums: A list of integers     * @return: An integer indicate the value of maximum difference between two     *          Subarrays     */    int maxDiffSubArrays(vector
nums) { // write your code here int x1 = deal(nums); reverse(nums.begin(),nums.end()); int x2 = deal(nums); return max(x1,x2); } int deal(vector
nums) { int n = nums.size(); vector
leftMax(n,0); vector
rightMin(n,0); int sum = 0; int mx = INT_MIN; for(int i=0;i
=0;i--) { sum+=nums[i]; mx = min(sum,mx); if(sum>0) sum = 0; rightMin[i]=mx; } int ret = 0; for(int i=1;i

转载于:https://www.cnblogs.com/yutingliuyl/p/6944174.html

你可能感兴趣的文章
puppet学习之puppet证书验证
查看>>
Server 2008 R2 AD RMS完整部署:四、客户端篇
查看>>
Alcatel-Lucent 7750 运营商认证设备在线用户数OID
查看>>
靠自己。linux manul手册入门
查看>>
思科设备中查询筛选的命令精华
查看>>
大数据未来将呈现的八大发展趋势
查看>>
cm 升级
查看>>
创建数据库快照并恢复数据
查看>>
我的友情链接
查看>>
APP抓包——Fiddler工具
查看>>
java 图片处理
查看>>
博主制作的开源JAVA WEB游戏-《天命.罗生门》
查看>>
Windows软链脚本
查看>>
IOS开发之异步加载网络图片并缓存本地实现瀑布流(二)
查看>>
足球赛事球员信息api
查看>>
那些年我们经历过的运维
查看>>
安装带有调试信息的C库
查看>>
迷宫的基本实现
查看>>
Ajax跨域请求问题
查看>>
topic4:Qt入门之常用qt控件认知之Button系列
查看>>