此题是Search in Rotated Sorted Array的加强版,将一个有序数组往右移动若干位。这里的有序数组允许有重复数字。如果没有重复数字,那么复杂度是O(logn),用二分查找,根据中间值和左右两边的大小,以及和target的大小,来判断缩小一半查找。但是出现重复数字之后,如果中间值...
分类:
其他好文 时间:
2014-11-18 00:20:39
阅读次数:
213
说明:大部分代码是在网上找到的,好几个代码思路总结出来的
通常写算法,习惯用C语言写,显得思路清晰,但是如果一旦把思路确定下来,而且又不想打草稿,想快速写下来看看效果,还是python写的比较快,也看个人爱好,实习的时候有个同事对于python的缩进来控制代码块各种喷。。。。他觉得还是用大括号合适。。。怎么说呢,适合自己的才是最好的。我个人的毛病就是,写了几天C,到要转到python的时候,代码...
分类:
编程语言 时间:
2014-11-17 17:45:32
阅读次数:
188
题目链接:点击打开链接
思路:
我们先把礼物平均分成2堆。
然后枚举1-(n/2)的所有二进制状态。0就给a,1就给b。
我们设此时a获得的价值和为A,b获得的价值和为B
那么对于一个状态我们就能得到 B-A。
给所有B-A排个序,得到数组K
对于另一半(n/2+1) - n也这样枚举得到A-B.然后去K数组中二分查找距离-(A-B)最近的数即可。...
分类:
其他好文 时间:
2014-11-16 18:45:31
阅读次数:
134
Partition的中文意思就是分区,分片的意思,这个阶段也是整个MapReduce过程的第三个阶段,就在Map任务的后面,他的作用就是使key分到通过一定的分区算法,分到固定的区域中,给不同的Reduce做处理,达到负载均衡的目的。他的执行过程其实就是发生在上篇文章提到的collect的过程阶段,当输入的key调用了用户的map函数时,中间结果就会被分区了。虽说这个过程看似不是很重要,但是也有值...
分类:
其他好文 时间:
2014-11-16 17:25:40
阅读次数:
235
题意:数轴上每个位置为0或是1,给n(1 个区间[ai, bi],每个区间内至少有 ci
个1.0 1 。问数轴上至少有多少个1可以满足要求。
解法1:现将区间按右端点排序,然后每个区间内的点尽量往右边放,这样子可以照顾到以后的。在找每个区间的放法时,线段树查询区间1的个数,二分查找要放的后缀位置,然后将整个区间后缀全部涂上1.总复杂度是nlognlogn。网上没找到有人这么做的,但...
分类:
其他好文 时间:
2014-11-16 15:59:51
阅读次数:
257
这道题目需要用二分查找,否则可能超时,时间复杂度应嘎是n.lgn。可以通过。二分查找末班int find(l,r){ int mid=(l+r)/2; if(data[mid]==num) return mid; else if ... return find(l,mid-1) //注意...
分类:
其他好文 时间:
2014-11-15 21:29:40
阅读次数:
321
现在编程也算是走上门了,但是没有把算法掌握下来只能说自己还是门外汉,所以以后我们就开始努力的学习算法,现在把自己每天的学习分享在这里希望大家能喜欢,并且我也要在这里整理我一天的学习和思路,。二分查找。。大家经常需要在一个数组中寻找某个值。如果是一个已经拍好序的话那么可以很快的找到。我们考虑下暴力查找...
分类:
编程语言 时间:
2014-11-14 22:30:25
阅读次数:
272
POJ 3978 Primes(求范围素数个数)
http://poj.org/problem?id=3978
题意:
给你一个区间范围A和B,要你求出[A,B]内的素数个数。其中B<=100000。
分析:
首先我们求出2到10W的素数表,把每个素数按从小到大的顺序保存在prime数组中。然后我们用二分查找找到A的下界和B的上界,然后用上界-下界即为素数个数。
程序实现用了两种筛选法来求素数表。两种筛选法都是基于每个自然合数都可以分解为:最小素因子p*剩余部分q。...
分类:
其他好文 时间:
2014-11-14 17:52:49
阅读次数:
253
目录 引言 二叉查找树节点定义查找操作插入操作删除操作 二叉查找树存在问题 完整源码讨论区 参考资料内容 1、引言 前面的文章介绍过二分查找、散列表查找;二分查找效率为Θ(lgn)、二分查找要求数组是静...
分类:
编程语言 时间:
2014-11-14 01:29:31
阅读次数:
288
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为: 1.第一步查找中间元素,即5,由于5,则6必然在5之后的数组元素中,那么就在{...
分类:
编程语言 时间:
2014-11-13 12:57:44
阅读次数:
189