algorithm
文章平均质量分 56
flowerdasiy
这个作者很懒,什么都没留下…
展开
-
质因数分解(给定一个整数,求该数的所有质因数)
import java.util.Scanner; public class fenjie { public static void main(String args[]) { // num要分解的数 // i已经分解出来的。 int num, i; System.out.print("please input a num:"); Scanner scanner = new原创 2014-09-17 21:17:16 · 889 阅读 · 0 评论 -
链表有关的常见面试题
1.单链表逆序 实现1: 遍历: 1: /* 2: * 遍历链表, 将每个结点的next置为其前驱 3: * 遍历过程中需要额外的指针来记录结点的前驱和后继 4: */ 5: LinkList ReverseList(LinkList L) 6: { 7: if (!L || !L->next) {转载 2014-09-21 22:22:32 · 300 阅读 · 0 评论 -
平衡括号问题
相关问题:http://blog.csdn.net/jiyanfeng1/article/details/8036007 (高矮人站队问题) 括号平衡问题,例如 ((()()))是平衡的,但是)()是不平衡的。 问题,一共有n个左括号和n个右括号,请找出所有的括号平衡序列。 思路一: Recursion. Base case is which the solution ha翻译 2014-09-11 11:30:02 · 525 阅读 · 0 评论 -
找出数组中两个只出现一次的数字
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n) ,空间复杂度是 O(1) 。 分析:这是一道很新颖的关于位运算的面试题。 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。 这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次转载 2014-09-10 15:25:13 · 243 阅读 · 0 评论 -
在一个int数组里查找出所有这样的数,它大于等于左侧所有数,小于等于右侧所有数。
这题很直观的一个算法是,挨个的查找各个元素是否满足条件,算法的复杂度是O(n^2),太过复杂。 但如果我们在从左到右扫描数组的时候,能够维护一个candidate的数组, 该数组的元素满足: 到目前为止,这些元素都大于等于它前面的元素,而小于等于到目前为止扫描到的它右边的所有元素。 容易证明, candidate数组中的元素是按照非递减顺序排列的,即对任意的i 当我们扫描到一个小的元素的时候,原创 2014-09-11 14:56:24 · 1159 阅读 · 0 评论 -
12个高矮不同的人,排成两排/Catalan数
作者:baihacker 来源:http://hi.baidu.com/feixue http://hi.csdn.net/baihacker 问题描述: 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 还有一道和这个题相关的题:http://blog.csdn.net/jiyanfeng1/artic转载 2014-09-11 09:19:33 · 393 阅读 · 0 评论 -
C#与数据结构--树论--红黑树(RED BLACK TREE)
介绍 今天我们来介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和 Robert Sedgewick改成一个比较摩登的名字:红黑树。 红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通转载 2014-09-11 16:39:06 · 346 阅读 · 0 评论 -
计算阶乘n!末尾0的个数
问题描述 给定参数n(n为正整数),请计算n的阶乘n!末尾所含有“0”的个数。 例如,5!=120,其末尾所含有的“0”的个数为1;10!= 3628800,其末尾所含有的“0”的个数为2;20!= 2432902008176640000,其末尾所含有的“0”的个数为4。 计算公式 这里先给出其计算公式,后面给出推导过程。 令f(x)表示正整数x末尾所转载 2014-09-17 17:44:14 · 275 阅读 · 0 评论 -
java 使用Random(0,1)实现Random(a,b) 以及 random.nextInt()不随机性
《算法导论》中的习题:描述RANDOM(a, b)过程的一种实现,它只调用RANDOM(0, 1) 原理:算出a和b之间的差距d,求得最小的bit位数,使其恰好大于d,通过random(0, 1)来置位二进制位,然后加上a,如果该值落在[a, b]之间,满足条件,否则丢掉改值,继续寻找其他值! 以下是相应实现代码,但今天重点不是代码实现,而是验证随机性。 import java.util原创 2014-11-08 11:20:59 · 2579 阅读 · 0 评论