baidu面试题
scgillian
这个作者很懒,什么都没留下…
展开
-
百度面试题:找出数组中出现次数超过一半的数
现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。分析:设数A出现次数超过一半。每次删除两个不同的数,在剩余的数中,数A出现的次数仍超过一半。通过重复这个过程,求出最后的结果。这个题目与编程之美中寻找水王相同 #includeusing namespace std;//size为数组A的大小//返回数组中出现超过一半的数int sea原创 2012-03-02 21:58:20 · 4880 阅读 · 3 评论 -
百度面试题:判断两棵树是否相等
请实现两棵树是否相等的比较,相等返回1,否则返回其他值,并说明算法复杂度。数据结构为:typedef struct_TreeNode{char c;TreeNode *leftchild;TreeNode *rightchild;}TreeNode;函数接口为:int CompTree(TreeNode* tree1,TreeNode* tree2);注:A、B两棵原创 2012-03-09 23:23:15 · 3057 阅读 · 0 评论 -
编程珠玑column14 heaps
堆的siftdown操作假设x[1..n]的序列已经是一个堆,现在修改x[1]的值,然后调整这个序列使维持堆的性质初始化所以i为1,直到i没有子节点或者子节点的值均大于i所在的节点的值为止。把c设置成节点i的子节点中值较小的节点索引c=2*iif(c+1if(x[c+1]c++原创 2013-08-27 13:48:19 · 985 阅读 · 0 评论