- 博客(12)
- 资源 (3)
- 收藏
- 关注
原创 [LeetCode] 零的个数 number of trailing zeros
给定一个整数 n,求出n的阶乘的尾零的个数。思路:只有2和5相乘才能得到一个尾零。如果2^2和5^2相乘,能得到两个尾零。。。代码: int numZeros(int num) { int count = 0; if (num < 0) { cout<<"Factorial is not defined for < 0"; return 0; } for
2015-07-31 12:30:33 1695
原创 后缀树和前缀树
给你一个很长的字符串 s,和一堆短字符串 T = {t1, t2, ...}。 设计一个高效的算法,确定T 里的每个字符串是不是 s 的子串。思路:先对字符串s构建一个后缀树,然后看看t1,t2...,是不是s的一个后缀的前缀。构建后缀树和查找后缀树的前缀都可以用递归的思路来解决。具体代码如下:public class SuffixTree { SuffixTreeNode ro
2015-07-31 11:12:05 936
翻译 最大重叠区间数目 Maximum number of overlapping intervals
最大重叠区间数目 Maximum number of overlapping intervals有一个party,许多人来参加。一个记录仪记录下了每个人到达的时间 s_i 和离开的时间 e_i ,也就是说每个人在party的时间为 [ s_i, t_i ]。求出这个party 同一时刻最多接纳了多少人。例如:Input: arrl [] = {1, 2, 9, 5, 5}
2015-07-21 23:40:38 5101
原创 幸运数字 2
幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,....。1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 ....把它们缩紧,重新记序,为:1 3 5 7 9 .... 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不
2015-07-21 10:12:14 1370
原创 幸运数字 1
定义“幸运号码”是十进制表示中只包含数字6和8的那些号码,比如68,666,888。定义“近似幸运号码”是能被任意一个幸运号码整除的那些号码,比如6,8,12,16。现在问对闭区间[a, b],“近似幸运号码”的个数。输入数据是一行,包括2个数字a和b,1比如输入:1 101234 4321输出2809
2015-07-21 10:10:18 1769
原创 非零比特的个数 count the number of bits
Counting bits set, Brian Kernighan's wayunsigned int v; // count the number of bits set in vunsigned int c; // c accumulates the total bits set in vfor (c = 0; v; c++){ v &= v - 1; // clear the
2015-07-16 23:25:34 1537
原创 求三个数的中数 find median of three numbers
int medianOfThreeNums(int A, int B, int C){ if ((A - B) * (C - A) >= 0) return A; else if ((B - A) * (C - B) >= 0) return B; else return C; }
2015-07-16 11:31:22 1227 1
原创 船只数目 number of boats
给定一个数组 float arr [ N ] ,数组中每个数代表一个人的体重。这些人要过河,一条船最多载两个人,最大载重为 W 公斤。把这些人运过河,最少要多少条船?解法:先对数组排序,然后设置两个指针,idx1 和 idx2 ,idx1=0,idx2=N-1。 如果 arr[idx1] + arr[idx2] 如果 arr[idx1] + arr[idx2] > W, 那么船数
2015-07-16 08:36:03 582
原创 The kth largest element in max-heap 最大堆的第k大元素
给定一个最大堆,找出第k大的节点。解法:建一个最小堆 minHeap来解决此题. 1 取最大堆的根节点,放入minHeap; 2 移除minHeap的根节点,并把该根节点在最大堆的两个子节点插入minHeap(插入过程保证heap的性质); 3 回到1.2 步。minHeap的节点数在不断增加,但是不会超过2k。minHeap插入节点的复杂度是
2015-07-16 02:59:03 1574 1
原创 Find duplicates in an array
Find duplicates in an array of length n. The array values are in the range of [1, n-1].思路:可以用bucket sort 先对数组排序,然后扫描排序后的数组,即可知道重复值。相关问题:[LeetCode] 找到第一个不存在的正整数 First Missing Positive
2015-07-15 06:29:48 537
原创 从二叉树中随机选择节点
给定一个二叉树,要求随机选择树上的一个节点。解法:遍历树的过程中,随机选择一个节点即可。具体做法参看:从输入流中随机抽取m个元素
2015-07-15 05:58:53 1733
Monte carlo模拟的Mathematica代码
2010-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人