算法/经典算法
文章平均质量分 70
CinnamonJester7
这个作者很懒,什么都没留下…
展开
-
对背包问题的理解
背包问题(Knapsack problem) 是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。(定义摘自Wikipedia) 1. 关于0-1背包问题,有界背包问题,无界背包问题的定义 0-1,界限 j 都是针对某个特定的物品数量而定的界原创 2013-04-16 07:40:13 · 1129 阅读 · 0 评论 -
大数据big data相关面试
1. 海量日志数据,提取出某日访问百度次数最多的那个IP IP地址是32位的二进制数,所以共有N=2^32=4G个不同的IP地址,如果使用HashMap,则使用的内存((4+4)*4G)远远超出内存大小。 解决办法,用IP的高8位进行划分,将ip划分到2^8=256个文件当中,并对每个文件(区间)进行HashMap并记录访问次数最高的ip。然后就可以计算出所有IP地址中访问次数最大的IP了原创 2013-08-14 01:13:29 · 903 阅读 · 0 评论 -
二叉搜索树转换为双向链表 binary search tree to double-linked list
经典的面试题目,思路是递归中序遍历,每次递归返回linked list中最后的一个元素lastNode,每次递归调用过程中要接受lastNode作为参数,因为是中序遍历,所以将lastNode作为参数传进去之后,总是先访问到最小的node。 代码如下 In Java: class BinaryTreeNode { BinaryTreeNode left; // previous Bina原创 2013-08-16 17:19:02 · 1100 阅读 · 0 评论 -
面试需要掌握的排序 Quick Sort and Merge Sort 快速排序和归并排序 [Java]
if N (the number of items to be sorted) is 10,000, then N^2 is 100,000,000, while N*logN is only 40,000. If sorting this many items required 40 seconds with the mergesort, it would take almost 28 hour原创 2013-09-12 02:27:10 · 2072 阅读 · 0 评论 -
面试只Trie树特点和应用场景
Trie树也叫前序表达树(prefix tree),Trie树的结构在这里不再赘述,请参考wiki trie,附一张wiki的图,如下: Trie通常和二叉搜索树作比较,同时也和HashTable做比较,其特点如下: 优点: 1. Trie进行对某个string查找的时间复杂度为O(m),m为string中字符个数。相比较,BST(二叉搜索树)的时间复杂度是O(logN),在树不平衡原创 2013-09-12 13:33:26 · 2124 阅读 · 0 评论 -
Java String转int
注意事项: 1. 判断length是否大于0 2. 判断第一个字符是否是‘-’ 3. 设置int值边界 4. while loop时对每一个字符要判断是否大于0, 小于10 例子: * parseInt("0", 10) returns 0 * parseInt("473", 10) returns 473 * parseInt("-0", 10) r原创 2013-10-06 11:55:31 · 836 阅读 · 0 评论 -
面试之图论[Graph],算法摘要总结
入度:indegreee Topological Algorithm 1)入度为0的边入队列 2)队列中取一个元素,遍历相邻元素,相邻元素入度减1,如果某元素入度为0,入队列 3)知道队列为空 Critical Path Algorithm 1)选取某个入度为0的点做V0,假设ve(V0) = 0。 根据拓扑顺序,计算各个节点的最早开始时间,即构建ve数组过程 2)逆向遍历拓原创 2013-10-29 07:18:27 · 2218 阅读 · 0 评论