子序列进阶问题

题目:

  有一个数组,让找到两个不重复的连续子序列A,B ,求Max(Sum(A)-Sum(B)

 

分析:

  1.   AB必定连续,设两端连接处index为{X,x+1},X可取0~n-1
  2.      设F(x)为连接处index为{X,x+1}时 Max(Sum(A)-Sum(B)的最大值
  3.      设 left_max(x): 以x为以x处结尾的序列的最大值 类比设出:left_min(x) right_max(x) right_min(x)
  4.      则F(x) = | left_max(x)-right_min(x) | 和  | right_max(x)-left_min(x) |中的最大值
  5.      Max(Sum(A)-Sum(B) 为F(0)~F(n-1)中的最大值

 

上代码:

  1 /**
  2  * 
  3  */
  4 package maxsuma_sumb;
  5 /** 
  6  * @author 作者 : chenhao
  7  * @version 创建时间:2017-6-8 上午10:50:42 
  8  * @Exception : NULL
  9  * 类说明 
 10  */
 11 /**
 12  * @author chenhao
 13  *
 14  */
 15 
 16 import java.io.BufferedReader;
 17 import java.io.File;
 18 import java.io.FileInputStream;
 19 import java.io.FileNotFoundException;
 20 import java.io.FileOutputStream;
 21 import java.io.FileReader;
 22 import java.io.IOException;
 23 import java.io.InputStream;
 24 import java.io.InterruptedIOException;
 25 import java.io.OutputStream;
 26 import java.text.SimpleDateFormat;
 27 import java.util.ArrayList;
 28 import java.util.Arrays;
 29 import java.util.Date;
 30 import java.util.List;
 31 import java.util.Map;
 32 
 33 import jxl.*;    
 34 import jxl.write.*; 
 35 import jxl.write.biff.RowsExceededException;
 36 
 37 
 38 
 39 
 40 public class Main 
 41 {
 42     public static void main(String[] argv) throws IOException, RowsExceededException, WriteException{
 43     
 44         int[] nums = {1, 2, -3, 1, 1, 2, -3, 1,-9};
 45         int res = getmax(nums);
 46         System.out.println(res);        
 47         
 48     }
 49     
 50     public static int getmax(int[] nums){
 51         
 52         int length = nums.length;
 53         int[] pmaxs = positivemax(nums);
 54         int[] pmins = positivemin(nums);
 55         int[] rmaxs = reversemax(nums);
 56         int[] rmins = reversemin(nums);
 57         int result = 0;
 58         for(int i=0;i<length-2;i++){
 59             
 60               int x = Math.abs(pmaxs[i]-rmins[i+1]);
 61               int y = Math.abs(rmaxs[i+1]-pmins[i]);
 62               result = Math.max(Math.max(result , x) , y);
 63         }
 64         
 65         return result;
 66     }
 67     
 68     public static int[] positivemax(int[]nums){
 69         
 70         
 71         int len = nums.length;
 72         int[] max = new int[len];
 73         for(int i=0; i<len; i++){            
 74             if(i>0){
 75                 if(max[i-1]>0)
 76                     max[i]=max[i-1]+nums[i];
 77                 else
 78                     max[i]=nums[i];
 79             }
 80             if(i==0){
 81                 max[i]=nums[i];
 82             }
 83         }
 84         return max;
 85         
 86     }
 87     public static int[] positivemin(int[]nums){
 88         
 89         
 90         int len = nums.length;
 91         int[] min = new int[len];
 92         for(int i=0; i<len; i++){            
 93             if(i>0){
 94                 if(min[i-1]<0)
 95                     min[i]=min[i-1]+nums[i];
 96                 else
 97                     min[i]=nums[i];
 98             }
 99             if(i==0){
100                 min[i]=nums[i];
101             }
102         }
103         return min;
104         
105     }
106     
107     public static int[] reversemax(int[]nums){
108         
109         
110         int len = nums.length;
111         int[] max = new int[len];
112         for(int i=len-1; i>=0; i--){            
113             
114             if(i<len-1){
115                 if(max[i+1]>0)
116                     max[i]=max[i+1]+nums[i];
117                 else
118                     max[i]=nums[i];
119             }
120             if(i==len-1){
121                 max[i]=nums[i];
122             }
123         }
124         return max;
125         
126     }
127     
128     public static int[] reversemin(int[]nums){
129         
130         
131         int len = nums.length;
132         int[] min = new int[len];
133         for(int i=len-1; i>=0; i--){            
134             
135             if(i<len-1){
136                 if(min[i+1]<0)
137                     min[i]=min[i+1]+nums[i];
138                 else
139                     min[i]=nums[i];
140             }
141             if(i==len-1){
142                 min[i]=nums[i];
143             }
144         }
145         return min;
146         
147     }
148 }
View Code

 

转载于:https://www.cnblogs.com/udld/p/7017147.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day5-shelve模块

一、概述前面章节我们讲述了json和pickle模块的序列化和反序列化处理&#xff0c;他们有一个不足是在python 3中不能多次dump和load&#xff0c;shelve模块则可以规避这个问题。shelve模块是一个简单的k,v将内存数据通过文件持久化的模块&#xff0c;可以持久化任何pickle可支持…

程序员:请你不要对业务「置之不理」

成长是条孤独的路&#xff0c;一个人会走得更快&#xff1b;有志同道合者同行&#xff0c;会走得更远。本篇内容整理自 21 天鲲鹏新青年计划线上分享内容。鲲鹏新青年计划是由 TGO 鲲鹏会组织的线上分享活动&#xff0c;希望能帮助更多同学一起学习、成长。12 月 28 日&#xf…

在Ubuntu系统下如何将chrome浏览器的bookmarks导出到本地

1. 打开chrome浏览器在页面的右上角点击那个三个小点的位置&#xff0c;找到bookmarks&#xff0c;然后点击bookmarks manager,然后在organize右侧大倒三角下选择&#xff0c;export bookmarks to HTML&#xff0c;选择要保存的位置&#xff0c;利用同样的方法下次就可以直接导…

028 -bash-4.1$ 出现故障的原理及解决办法?

最近在搭建分布式的时候&#xff0c;出现了这个问题&#xff0c;很不爽。下面是我的解决方式。 1.在用户下删除bash rm -rf /home/beifeng/.bash* 2.拷贝 cp /etc/skel/.bash* /home/beifeng 3.退出&#xff0c;再进入用户 4.解释 set |grep -i ps1 转载于:https://www.cnblogs…

李彦宏千字愿景内部信:10次提到“用户”

中新网1月17日电 1月17日&#xff0c;百度公司创始人、董事长兼CEO李彦宏发出一封内部信&#xff0c;信中&#xff0c;李彦宏向员工阐述了百度愿景&#xff1a;成为最懂用户&#xff0c;并能帮助人们成长的全球顶级高科技公司。他提出&#xff0c;百度要持续创新&#xff0c;“…

spring-boot 速成(8) 集成druid+mybatis

spring-boot与druid、mybatis集成&#xff08;包括pageHelper分页插件&#xff09;, 要添加以下几个依赖项: compile(mysql:mysql-connector-java:6.0.5)compile(tk.mybatis:mapper-spring-boot-starter:1.1.1)compile(org.mybatis.spring.boot:mybatis-spring-boot-starter:1.…

我们怎样确保从大数据计算中获得价值

我们怎样确保从大数据计算中获得价值 支持大数据方案并不是在硬件以及软件层次终止&#xff0c;企业要想真正地从大数据中受益&#xff0c;领导者必须改变思考与对待信息的方式。 我们怎样确保从大数据计算中获得价值&#xff1f; 当所有可用数据都可用时&#xff0c;大数据…

青海省多地日降水量突破历史极值

受高原槽和西北冷空气的共同影响&#xff0c;青海省海西州茫崖等多地日降水量突破历史极值。 李万花 摄 受高原槽和西北冷空气的共同影响&#xff0c;青海省海西州茫崖等多地日降水量突破历史极值。 李万花 摄 中新网西宁1月18日电 (孙睿 赵海梅)记者18日从青海省气象局获悉&am…

ORB-SLAM2中四叉树管理特征点

当从图像金字塔中的每一层图像上提取特征点之后&#xff0c;都要先用四叉树技术对这些特征点进行管理 //该类中定义了四叉树创建的函数以及树中结点的属性 //bool bNoMore&#xff1a; 根据该结点中被分配的特征点的数目来决定是否继续对其进行分割 //DivisionNode()&#xff…

SharePoint Search之(七)Search result- 结果源

在使用搜索引擎的时候。非常多情况下&#xff0c;用户希望限定一下搜索范围&#xff0c;以便更加easy找到想要的结果。在SharePoint 2013的search里&#xff0c;也支持类似的功能&#xff0c;SharePoint 默认提供了几种范围&#xff1a; 在SharePoint&#xff0c;这个叫Search …

旷视砸20亿进军AIoT,发布国内首个机器人协作大脑河图

1 月 16 日&#xff0c;人工智能独角兽旷视科技发布了机器人战略&#xff0c;以及自 2018 年 4 月收购艾瑞思机器人&#xff0c;进军机器人领域的最新进展——智能协同大脑河图。在会上&#xff0c;旷视还大笔一挥&#xff0c;决定投入 20 亿元&#xff0c;用于打造物流仓储上下…

「JupyterLab」 Jupyter Notebook 新生代IDE模式页面

参考&#xff1a;Overview 安装&#xff1a; $ pip install jupyterlab 启动&#xff08;不是jupyter notebook&#xff09;&#xff1a; $ jupyter lab Jupyterlab中最好用的就是显示csv数据。CSV数据显示效果&#xff1a; 安装插件 jupyterlab是和jupyter notebook隔离的&…

PAT(乙级)1009

1009. 说反话 (20)给定一句英语&#xff0c;要求你编写程序&#xff0c;将句中所有单词的顺序颠倒输出。 输入格式&#xff1a;测试输入包含一个测试用例&#xff0c;在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成&#xff0c;其中单词是由英文字母&…

库存扣减问题

2019独角兽企业重金招聘Python工程师标准>>> 并发减库存 并发扣库存问题总结 库存扣减还有这么多方案&#xff1f; | 架构师之路 转载于:https://my.oschina.net/u/2939155/blog/3004363

HSRPSTPACL

1 HSRP配置 1.1 问题 在企业网络到外部的连接方案中&#xff0c;要求不高的条件下可以是单出口。一旦该出口线路出现问题&#xff0c;整个企业网络就不能连接到外网了。为了使得企业网络到外网连接的高可用性&#xff0c;可以设置两个以上的出口&#xff0c;然而多个出口对…

java 的 CopyOnWriteArrayList类

初识CopyOnWriteArrayList 第一次见到CopyOnWriteArrayList&#xff0c;是在研究JDBC的时候&#xff0c;每一个数据库的Driver都是维护在一个CopyOnWriteArrayList中的&#xff0c;为了证明这一点&#xff0c;贴两段代码&#xff0c;第一段在com.mysql.jdbc.Driver下&#xff0…

科技的趋势!AI将进军了37%的企业

2019独角兽企业重金招聘Python工程师标准>>> 市场研究机构Gartner调查了全球89个国家的逾3,000名信息长&#xff08;CIO&#xff09;&#xff0c;显示有37%的企业已经或打算于近期内部署人工智能&#xff08;AI&#xff09;&#xff0c;在4年内成长270%。Gartner研究…

CMakeLists.txt编写规则

在PROJECT_SOURCE_DIR下新建了src, include, lib, bin四个子文件夹。 src文件夹用来存放所有的.cpp文件&#xff0c;include文件夹用来存储所有的.h文件&#xff0c; lib中存放生成的自己编写的共享库&#xff0c; bin中存放所有的可执行文件 用SET来设置.exe可执行文件和共享…

瓜子二手车发12月二手车价格:汉兰达奥德赛CR-V保值率居首

中新网1月22日电 日前&#xff0c;基于海量个人对个人的二手车成交数据&#xff0c;瓜子二手车公布了12月全国及多个核心城市的二手车交易“瓜子价”数据。数据显示&#xff0c;2018年12月全国瓜子二手车严选直卖签约均价为87934元&#xff0c;环比上涨0.16%&#xff0c;同比上…