博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小技巧1-最大差
阅读量:4318 次
发布时间:2019-06-06

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

问题一:在一个数组中找到差值最大的两个数字,要求小数在前大数在后,时间O(n)

想法:从前往后遍历的时候记录最大值和最小值,如果当前最大值在最小值的后面,更新差值的最大值

1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 int readint(){ 9 int x;scanf("%d",&x);return x;10 }11 12 int main()13 {14 vector
a;15 int n,maxn,minn,value_maxn;16 scanf("%d",&n);17 for(int i=0;i
maxn){30 maxn=a[i];31 if(maxn-minn>value_maxn)32 value_maxn=maxn-minn;33 }34 }35 printf("%d\n",value_maxn);36 return 0;37 }

问题二:求和最大的子序列之和(hdu1003)

想法一:首先,考虑暴力的方法,遍历整个序列,假定所有位置都是一个开始位置,然后去求当前开始位置下,任意结束位置的序列和,比较出最大的序列和即可。这样,时间复杂度为O(n^2)

进一步考虑,假设已经得到最大和的子序列,那么之所以这个子序列不包含前面的几个或者后面几个元素的原因,就是因为前面(或者后面)连续几个元素的和是负数。这样,考虑子序列的结束位置,遍历0...n-1,假设当前位置为结束位置,那么如果以前面一个位置为结束的最大子序列和为负数时,只包含当前位置元素的子序列就是以当前位置结束的子序列的最大值;否则,以前面一个位置为结束的最大子序列和加上当前元素就是以当前位置结束的子序列的最大值。这样,按顺序遍历一遍,就可以得到以每个位置为结束位置的最大子序列的和,其中最大的就是整个序列最大子序列的和,时间复杂度O(n)。

 

想法二:前缀和的想法,首先求出前缀和,一段子序列的和就变成了前缀和序列中两值之差,求出最大的差值即可。就转化成了问题一:如何在O(n)的时间中求出前小后大差值最大的两个数。

1 #include 
2 #include
3 #include
4 #include
5 6 using namespace std; 7 8 int readint(){ 9 int x;scanf("%d",&x);return x;10 }11 12 int main()13 {14 vector
a;15 vector
sum;16 int n,maxn,minn,value_maxn;17 scanf("%d",&n);18 for(int i=0;i
maxn){35 maxn=sum[i];36 if(maxn-minn>value_maxn)37 value_maxn=maxn-minn;38 }39 }40 printf("%d\n",value_maxn);41 return 0;42 }

问题三:求积最大的连续子段

想法:这个问题也有两种做法,1,你可以模仿问题二的第一种做法维护最大最小值。2,模仿问题二的第二个想法,维护前缀积数组。在这里不给出实现。

转载于:https://www.cnblogs.com/wz-archer/p/10165117.html

你可能感兴趣的文章
sk_buff Structure
查看>>
oracle的级联更新、删除
查看>>
多浏览器开发需要注意的问题之一
查看>>
Maven配置
查看>>
HttpServletRequest /HttpServletResponse
查看>>
SAM4E单片机之旅——24、使用DSP库求向量数量积
查看>>
从远程库克隆库
查看>>
codeforces Unusual Product
查看>>
hdu4348 - To the moon 可持久化线段树 区间修改 离线处理
查看>>
springMVC中一个class中的多个方法
查看>>
Linux系统安装出错后出现grub rescue的修复方法
查看>>
线段树模板整理
查看>>
[iOS问题归总]iPhone上传项目遇到的问题
查看>>
Python天天美味(总) --转
查看>>
Spring Framework tutorial
查看>>
【VS开发】win7下让程序默认以管理员身份运行
查看>>
【机器学习】Learning to Rank 简介
查看>>
Unity 使用实体类
查看>>
MySQL常见注意事项及优化
查看>>
流畅的Python (Fluent Python) —— 前言
查看>>