并查集是一种树型数据结构,主要用于处理不相交集体之间的合并和判断某一元素所在的集合(并查集中集体是用其最高父结点表示),这种数据结构维护一个数组,father[],用于记录每个元素的父亲,也就其所在的集合;其主要的操作有两种,查找和合并,对于查找算法可以用路径压缩进行优化,除了这两种主要的操作,并查...
分类:
其他好文 时间:
2015-05-02 20:46:04
阅读次数:
144
资料摘自:
typedef int DataType;
//顺序查找算法
//用顺序查找在n元数组list中查找与key等值的元素,返回该数组元素的下标
//若未找到,则返回-1
int SeqSearch(DataType List[], int n, DataType key)
{
for(int i = 0; i
{
if(List[i...
分类:
编程语言 时间:
2015-05-02 18:12:06
阅读次数:
173
一、递归 简单来说,递归的思想就是:把问题分解为规模更小的、具有与原问题有着相同解法的问题。比如二分查找算法,就是不断地把问题的规模变小(变成原问题的一半),而新问题与原问题有着相同的解法。 一般来讲,能用递归来解决的问题必须满足两个条件: 可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的...
分类:
其他好文 时间:
2015-05-02 18:06:27
阅读次数:
116
这一题,也是简单的二分搜索,求解放置的牛之间的距离尽可能远,也就是最大化最小值。
主要的一步就是将第i头牛放在了x[j]的位置中,第i + 1
头牛就要放在满足x[j] + d ,k的最小值。
下面是AC的代码:
#include
#include
using namespace std;
int N, M;
int X[100005];
bool C(int x)
{
int ...
分类:
其他好文 时间:
2015-04-30 23:19:52
阅读次数:
378
题目主要的意思是:有N条绳子,它们的长度分别为Li,如果从它们中切出K条长度相同的绳子的话,这K条绳子每一条的最长的长度能是多少?
这一题用二分搜索可以很好的进行求解。
长度分别为0到INF(INF为尽可能大的数)。然后进行二分搜索,不断的缩小范围,循环一定的次数,可以很好的将答案求出。
G++double要用%lf输入,用%f输出,C++是window下的,用%lf输入,用%lf输出。
...
分类:
其他好文 时间:
2015-04-30 21:51:06
阅读次数:
222
百度面试题:给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。
一. 实例
为了说明Bloom Filter存在的重要意义,举一个实例...
分类:
编程语言 时间:
2015-04-29 11:36:59
阅读次数:
177
算法理论1. 算法的几个特征是什么。2. 算法复杂性的定义。大O、θ、、小o分别表示的含义。3. 递归算法的定义、递归算法的两要素。4.分治算法的思想,经典的分治算法(全排列、二分搜索、归并排序、快速排序、线性时间选择、最接近点对问题)。5. 动态规划算法解题框架,动态规划算法的两个要素是什么?备忘...
分类:
编程语言 时间:
2015-04-29 11:27:25
阅读次数:
228
题目1:给出一个一维数组A, 大小为n, 相邻元素的差的绝对值都为1. 如A = [1, 0, 1, 2, 3, 2, 1, 2, 3],现在给定A和目标查找数num. 请找到num在数组中的位置。
题目2:在题目一的前提下,现在要返回num的所有索引位置。思路:依次遍历可以实现,但是复杂度O(N).
如果数组第一个元素是A[0], 要找的数是num. 设 t = abs(num - A[0]...
分类:
编程语言 时间:
2015-04-27 21:59:15
阅读次数:
181
题目:
输入n个整数,输出其中最小的k个。
例如:1,2,3,4,5,6,7,8
则最小的4个数为1,2,3,4,
#include
using namespace std;
class MinK{
public:
MinK(int *arr, int si) :array(arr), size(si){}
bool kmin(int k, in...
分类:
其他好文 时间:
2015-04-27 15:21:31
阅读次数:
122
基于数组二分查找算法的实现
二分查找 查找 算法 赵振江
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的...
分类:
编程语言 时间:
2015-04-26 10:58:49
阅读次数:
163