上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 看看下面代码的输出是什么:public class MemoeryManager { public static void main(String[] args){ String a="a"; String b="b"; String ab="ab"; final String af="a"; String plus=a+"b"; String result=af+"b"; System.out.println((a+b)==ab); System.out.println(& 阅读全文
posted @ 2013-10-09 15:32 orchid 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 这个树没有规定是二叉树。思路就是先求根到两个节点的路径,然后根据两条路径求的最低公共祖先。必须下面的图,I和G的最低祖先是A,I和J的最低公共祖先是D。完成的java代码如下:import java.util.*;public class NearistCommonFather { public TreeNode getNeariestCommonFather(TreeNode h,TreeNode n1,TreeNode n2){ if(h==null||n1==null||n2==null){ return null; } ... 阅读全文
posted @ 2013-10-07 17:59 orchid 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 某互联网企业的笔试题:判断单链表是否有环?如果有环,如何在O(N)的时间复杂度和O(1)的空间复杂度得到这个环的入口点?问题1:如何判断有环呢?这个方法可能不只一种,但是在网上看到的那个类似于两个人跑步的解法最容易让人接受。两个人跑步,同时跑,但一个人在跑的快,一个人跑的慢,如果他们在一个环形操场上... 阅读全文
posted @ 2013-09-29 17:02 orchid 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 这篇博客描述7种遍历二叉树的方式,其中三种是常用的前序、中序和后序遍历的递归算法,另外三种是前序、中序和后序遍历的非递归算法,最有一种是按层次的遍历。(1)前序遍历,递归算法public void preOrder(Node root){ if(root==null){ ... 阅读全文
posted @ 2013-09-25 14:41 orchid 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 字符串(可以推广到数组)"abc",它的一个划分是由它的子字符串组成的集合,比如abc能够产生一下四个划分{a,b,c},{a,bc},{ab,c},{abc}。现在用代码生成给定字符串的划分集合。public ArrayList> partition(String s){ if(s==null||s.isEmpty()){ return null; } ArrayList> result=new ArrayList>(); ArrayList output=new ArrayList(); getPa... 阅读全文
posted @ 2013-09-24 15:24 orchid 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 问题:有函数rand5(),它能够等概率生成[0,5)之间的整数。由rand5()构造rand(n)使其能够等概率生成[0,n)之间的整数。思路1:有rand5()先生成等概率生成0和1的rand01(),有了rand01就可以像上一篇文章一样生成rand(n)。思路2:rand5和rand01有何区别?一个是生成01,一个是生成01234,(一个以2为基,一个以5为基),既然rand01能用来构造rand(n),那么rand5也可以通过同样的原理得到rand(n).Java代码://用rand5生成rand(n) public int rand2(int n){ whil... 阅读全文
posted @ 2013-09-21 16:53 orchid 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 问题:有函数rand01()能够等概率的生成0和1,用rand01生成rand(n),使其能够等概率的生成0-n-1的整数。java代码: 1 public int rand(int n){ 2 while(true){ 3 int bits=(int)Math.ceil((Math.log(n)/Math.log(2))); 4 int v=0; 5 for(int i=0;i<bits;i++){ 6 if(random01()==1){ 7 ... 阅读全文
posted @ 2013-09-21 16:21 orchid 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 问题:现有函数rand()能够以p的概率生成0,1-p的概率生成1,利用此函数新函数newrand()使其能够等概率的生成0和1。int newrand(){ while(true){ int r1=rand(); int r2=rand(); if(r1==0 && r2==1){ return 0; } if(r1==1 && r2==0){ return 1; } }//while end} 分析:r1和r2的所有情况:(1)r1=0,r2=0 概率p*p(2)r1=0,r2=1... 阅读全文
posted @ 2013-09-21 15:40 orchid 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 这是编程之美中的一道题。编程之美中的题目是这样的:1+2=34+5=92+3+4=9等式的左边都是两个或者两个以上的连续自然数相加,那么是不是所有的整数都可以写成这样的形式?问题1:写个程序,对于一个64位正整数,输出它所有可能的连续自然数之和(两个数以上)的算式。问题2:哪些数字不能不能表示成连续自然数之和?能否证明。问题3:在64位正整数的范围内,子序列数目最多的数是哪一个?能否用数学知识推导出来。-------------------问题1:这个最先想到方法就是蛮力法。对于一个i (1 ns=new List(); for (int j = i; j 0,k>1.那么s=(m+m+ 阅读全文
posted @ 2013-09-18 18:41 orchid 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 因子的概念:假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因子。 需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立。反过来说,我们称n为m的倍数。求一个正整数n的所有因子,非常简单。只要从1到n逐个进行测试就可以。可以削减的一点计算量是不用遍历到n,遍历到根号n就可以。C#代码如下public List Factors(int n) { List list = new List(); int rootn = Convert.ToInt32(Math.Floor(Math.Sqrt(n))); ... 阅读全文
posted @ 2013-09-18 17:53 orchid 阅读(1816) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页