判断一颗树是不是二分查找树,非常经典基础的一个算法。我很久之前第一次做的时候,是先求出来了树的前序遍历的结果,然后判断这个数组排序后是否和排序前相同,还要判断重复虾米的,很纠结的一种做法。后来思考了一下怎么用递归的思路做,觉得应该根据定义返回两个子树的最大值和最小值,写了一会代码,发现好麻烦,不太对...
分类:
其他好文 时间:
2014-07-06 13:14:30
阅读次数:
178
题目:10700 - Camel trading
题目大意:给出一些表达式,表达式由数字和加号乘号组成,数字范围【1,20】。这些表达式可能缺少了括号,问这样的表达式加上括号后能得到的最大值和最小值。
解题思路:因为这些数的都是正整数,所以可以用贪心。不然看出最大值就是先做完加法在做乘法,最小值就是先做乘法在做加法。注意这里的数值要用long long 因为比表达式的值可能会超过int...
分类:
其他好文 时间:
2014-07-05 23:43:50
阅读次数:
221
题意:
一个矩形内每个格子都有一个值 现在有q个操作 每个操作给出坐标(x,y)和长度L 每次操作输出以(x,y)为中心的边长为L的矩形内的最大值和最小值之和的一半 并将这个值更新到(x,y)坐标上
思路:
区间查询最大最小值 单点更新 明显是线段树的特征 不过这里是二维的线段树 我用的是树套树的写法
我对二维线段树的理解:(个人理解不一定正确)
初始化麻烦 相...
分类:
其他好文 时间:
2014-07-01 07:08:08
阅读次数:
209
题意:给出n个二进制串,可以把其中的一些0和1反转(即0变1,1变0),找出转化后n个串中的最大值和最小值的差值。
分析:思路就是把所有的串和反转的存在一个数组中,然后排序,找最大值和最小值的差,(如果是同一个串反转的就找第二大的和最小的或第二小和最大的中的最大值)。注意假如只有一个串的话结果为0
DEBUG:
这题写了好久
1.第一次用vim,很爽,但是还没熟练
2.忽...
分类:
移动开发 时间:
2014-06-30 19:19:10
阅读次数:
254
题目描述:求数组的最大值和最小值,并且计算比较次数思路:(1)普通思路是遍历一遍,得比较2*N次(2)分治,具体计算可以参考书上内容,算法时间复杂度是O(logn) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #incl...
分类:
其他好文 时间:
2014-06-26 17:13:38
阅读次数:
170
题目链接:http://poj.org/problem?id=2823
题目大意:给出一组数,一个固定大小的窗口在这个数组上滑动,要求出每次滑动该窗口内的最大值和最小值。
这就是典型的单调队列,单调队列的作用就在此。单调队列的队首为区间内的最值,但是整个队列不用保持单调。
用两个队列分别处理最大值和最小值,在此说明一下最大值;
往队列中添加值num时,从队尾开始扫,直到遇到一个小于num的...
右键单击我的电脑--->>属性--->>高级->设置->就可以设置虚拟内存的最大值和最小值了。如果实在要用windows,看看下面的,没有经过实践,仅供参考右键单击我的电脑--->>属性--->>高级--->>启动和故障修复--->>设置--->>编辑--->>将最后一行multi(0)disk(0...
分类:
其他好文 时间:
2014-06-20 20:29:52
阅读次数:
242
Right-BICEPRight首先,我们需要知道什么是正确的.这是最基本的.Boundary边界是否所有的边界条件都正确?CorrectConformance一致性结果值是否和期望值一致.Ordering顺序性值是否跟期望一样,是有序/无序的.Range区间性值是否位于合理的最大值和最小值之间.R...
分类:
其他好文 时间:
2014-06-17 19:51:20
阅读次数:
166
求一个数组中的最大值和最小值,我们一般的做法是扫描一遍数组求的最大值,扫描一遍数组求最小值,这样做需要比较2N次才能求解。而实际上我们可以比较1.5N次即可得到结果。考虑如下几种方法。
方法一:
我们可以把数组分成两部分,首先按照顺序将数组中的相邻的两个数分在同一组,接着比较同一组中奇数位上的值和偶数位上的值,将较大的放在偶数位上,较小的放在奇数位上,这样经过0.5N次比较后,最大数肯定在偶数位上,最小的数肯定在奇数位上,而后分别扫描一遍数组的偶数位和奇数位,便可得到最大值和最小值。这样,...
分类:
其他好文 时间:
2014-06-08 14:42:42
阅读次数:
212
找出一个数组的最大值和最小值是比较容易的,我们只需遍历一次数组即可。但是寻找一个数组的第i小或者第i大,就需要一些技巧使得查找的时间尽可能小。随机化划分选择算法是一个时间复杂度为O(n)的算法。int
fIndmax(int a[],int p,int r,int i){ if(p==r) ...
分类:
其他好文 时间:
2014-05-30 01:57:38
阅读次数:
269