
算法
文章平均质量分 76
常常出没
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java-用两个栈实现队列&&用两个队列实现一个栈
import java.util.ArrayList;import java.util.List;import java.util.Stack; /* * Q 57 用两个栈实现队列 */public class QueueImplementByTwoStacks { private Stack stack1; private Stack stack2; Queue转载 2014-12-17 21:56:07 · 297 阅读 · 0 评论 -
二叉树宽度高度和判断是否相等
经常会遇到关于二叉树的算法问题,虽然比较简单,不过我觉得还是有必要总结一下.顺便写了个sample程序,以供参考.本文中主要讨论关于二叉树的以下3个问题,都是用递归来实现,Divide and conquer也就是所谓的分冶策略. 1.二叉树的高度 2.二叉树的宽度 3.比较两个二叉树是否相等数据结构的定义 先定义一个简单的二叉树,由于只是演转载 2014-12-17 22:50:01 · 399 阅读 · 0 评论 -
第一次只出现一次的字符
看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路时间复杂度是O(n2)。我们试着去找一个更快的方法。 由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数?要达到转载 2014-12-17 21:35:39 · 429 阅读 · 0 评论 -
二分查找
1.二分查找值为key的下标,如果不存在返回-1。循环不变式:如果key存在于原始数组[0,n-1],那么它一定在[left,right]中。初始化:第一轮循环开始之前,处理的数组就是原始数组,这时显然成立。保持:每次循环开始前,key存在于待处理数组array[left, ..., right]中。对于array[mid]对于arr转载 2014-12-19 10:17:46 · 359 阅读 · 0 评论 -
概率生成器
百度的一个面试题目:.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器, 使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;…, 构造一个发生器,使得它构造1、2、3、…n的概率均为1/n,要求复杂度最低。初看确实有点头晕,也没什么思路。但是仔细想想为什么生成0和1的概率均为1/2,我们可以看成是生成0和转载 2014-12-19 23:44:26 · 1198 阅读 · 0 评论