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

本文共 1096 字,大约阅读时间需要 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

转载地址:http://xveeo.baihongyu.com/

你可能感兴趣的文章
利用U盘给Intel NUC安装CentOS
查看>>
Angular项目中核心模块core Module只加载一次的实现
查看>>
EasyPoi导出导入excel
查看>>
全城皆偷菜
查看>>
asp.net之treeview无法显示树结点图标(IP与域名的表现竟不一样)
查看>>
sql server 2008 offer 4 kinds of date datatypes
查看>>
MATLAB学习笔记(九)——MATLAB符号计算
查看>>
PHP高级程序设计:模式、框架与测试
查看>>
ORACLE 10g AWR报告设置总结
查看>>
技术答疑:小区或城中村宽带,是否要开启DHCP?开启DHCP后,和开启前有啥明显区别...
查看>>
SDE 远程连接 失败
查看>>
关于WayOs中无线覆盖中WEB认证存在的一些问题
查看>>
JavaScript原型继承的陷阱
查看>>
Oracle公司对日本9.0级大地震的哀悼
查看>>
C语言的##
查看>>
start a new android studio project not working
查看>>
Flashtext 使用文档 大规模数据清洗的利器-实现文本结构化
查看>>
学会用“我懂谁最懂”策略
查看>>
解决socket交互的10048和10055错误的总结
查看>>
UVA 10229 Modular Fibonacci
查看>>