08 2014 档案

摘要:2.1 求二进制中1的个数。2.2 求n!末尾有多少个0 和 求n!的二进制表示中最低位1的位置。2.3 找出数量超过总数一半的记录。 扩展:3个发帖都超过了总数N的1/4。2.4 十进制1~N 所有整数中1的个数; 满足F(N)=N的最大的N是多少。 扩展:CC上所有2的个数。2.5 寻找最大的k... 阅读全文
posted @ 2014-08-26 20:29 jdflyfly 阅读(533) 评论(0) 推荐(0)
摘要:按照题意,要实现两个方法: addNewNumer(int num) 和 getMedian()维护两个priority queue:maxHeap 和 minHeap。maxHeap中存放小于中位数的元素,minHeap中存放大于中位数的元素。并且保证两个堆里元素数量相等或者max比min多一个。... 阅读全文
posted @ 2014-08-26 17:07 jdflyfly 阅读(292) 评论(0) 推荐(0)
摘要:给定一个字符串s 和 一个包含较短字符串的数组t,设计一个方法,根据t中的每一个较短的字符换,对s进行搜索。思路:基于s建立后缀树,然后在后缀树中进行查找,返回所有可能的索引值。import java.util.ArrayList;public class Question { public ... 阅读全文
posted @ 2014-08-26 16:15 jdflyfly 阅读(212) 评论(0) 推荐(0)
摘要:用HashMap缓存记录结果,以防止重复计算。枚举分割点,dfs。注意单词本身不能由单词本身构成,需要isOrigin符号判断下。import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;public c... 阅读全文
posted @ 2014-08-26 15:00 jdflyfly 阅读(191) 评论(0) 推荐(0)
摘要:shuffle:递归的思考,假如n-1个元素已经shuffle好了,第n个元素应该从0~n的范围内选择交换目的地。一直递归到一个元素的shuffle情况。n选m:假如n-1个元素中选m的情况已经好了,那么对于第n个元素,可以在0~n的范围内随机的选取一个元素,如果选的元素在m范围内,那就剔除掉原有的... 阅读全文
posted @ 2014-08-24 20:27 jdflyfly 阅读(220) 评论(0) 推荐(0)
摘要:先异或求sum,然后求carry,二者的和就是结果,可使还是不能用加号,递归执行,直到b==0。因为每次carry都移位右边多出一个零,然后下一次&的时候必然后面会是0,所以每递归调用一次b后面就多一个零,直到b==0.public class Solution { public static... 阅读全文
posted @ 2014-08-24 19:57 jdflyfly 阅读(267) 评论(0) 推荐(0)
摘要:track操作类似与插入操作。rank操作返回比当前元素小或者相等的元素数。思路:track操作插入构造BST(没有保证平衡),但是节点增加一个leftSize,这里学习一下。public class Solution { private static RankNode root = null... 阅读全文
posted @ 2014-08-24 16:59 jdflyfly 阅读(235) 评论(0) 推荐(0)
摘要:思路:定义好Person的数据结构,按照身高和体重排好序。solutions[i]代表以person[i]结尾的能够叠起的最多人的解。solutions[0]初始化,然后求从1~n的情况。import java.util.ArrayList;import java.util.Collections;... 阅读全文
posted @ 2014-08-24 15:45 jdflyfly 阅读(457) 评论(0) 推荐(0)
摘要:二分法变体,当查找到mid元素是空串时,同时向两边扩散寻找不为空串的索引作为mid,继续执行二分。public class Solution { public int search(String[] list, String str) { if (list == null || ... 阅读全文
posted @ 2014-08-24 13:55 jdflyfly 阅读(330) 评论(0) 推荐(0)
摘要:思路:递归执行,子函数需要返回子链表的head和tail,所以借助内部类NodePair来实现。/** * 4 / \ 2 5 / \ \ 1 3 6 / 0 0123456 * */public ... 阅读全文
posted @ 2014-08-24 11:52 jdflyfly 阅读(321) 评论(0) 推荐(0)
摘要:思路: 枚举分割点递归求解,可用DP优化。 注意递归终止条件。 注意 ^ & | 三种情况统计的不同。import java.util.HashMap;import java.util.Map;public class Solution { int countR(String terms,... 阅读全文
posted @ 2014-08-24 11:22 jdflyfly 阅读(692) 评论(0) 推荐(0)
摘要:递归求解,求出已某个箱子为底,返回最高可以放的箱子堆。DP思想优化,对于已经求过的已某个箱子为底的情况,用一个map记录下来,以后直接返回即可。 注意一些clone等一些语言细节。import java.util.ArrayList;import java.util.HashMap;import ... 阅读全文
posted @ 2014-08-24 10:25 jdflyfly 阅读(1075) 评论(0) 推荐(0)
摘要:思路:对于可以选择的面值(面值比num都大,当然不可选),一次选择0次~最多选择的次数,然后递归下去,子函数只能从后面的货币开始选。import java.util.ArrayList;import java.util.List;public class Solution { int[] mo... 阅读全文
posted @ 2014-08-23 22:23 jdflyfly 阅读(527) 评论(0) 推荐(0)
摘要:还是permutation的算法,字符串也没什么太大的区别。 先排序,然后注意如何去重。import java.util.ArrayList;import java.util.Arrays;public class Solution { public static ArrayList getP... 阅读全文
posted @ 2014-08-23 22:12 jdflyfly 阅读(251) 评论(0) 推荐(0)
摘要:在A[0..n-1]中,满足条件 A[i]==i的索引。给定一个有序数组,设法找到其中的magic index。扩展:考虑有重复元素的情况如何处理。public class Solution { public static int magicIndex(int[] array) { ... 阅读全文
posted @ 2014-08-23 21:51 jdflyfly 阅读(184) 评论(0) 推荐(0)
摘要:先异或,然后统计1的个数。统计1的个数可以移位一位一位看,高级的算法 n&(n-1)会消去n最低位的1.扩展 n&(n-1)==0代表什么意思:n是2的某次方或者n==0;int bitSwapRequired(int a,int b){ int count=0; for(int c=a... 阅读全文
posted @ 2014-08-23 16:18 jdflyfly 阅读(281) 评论(0) 推荐(0)
摘要:思路:依次减去 0.5,0.25,0.125。。。 够减二进制为1,不够减二进制为0。public class Solution { public static String printBinary(double num) { if (num >= 1 || num 0) { ... 阅读全文
posted @ 2014-08-23 15:58 jdflyfly 阅读(461) 评论(0) 推荐(0)
摘要:打印二叉树节点数值总和等于某个给定节点的所有路径,路径可以从任意节点开始,任意节点结束。比如,假设和是8,树如下 的路径有 [[5,3],[8],[5,1,2]]。 5 / \ 3 1 /\ /\4 8 2 6思路:遍历所有路径,对于每一个节点,在其路径中向后寻找sum和为targ... 阅读全文
posted @ 2014-08-22 23:09 jdflyfly 阅读(642) 评论(0) 推荐(0)
摘要:基本模仿CC150上的思路,递归地在t1中寻找能与t2的根相同的节点,作为开始比较的开始点,然后递归的比较两个树是否相等。boolean containsTree(TreeNode t1, TreeNode t2){ if(t2==null) return true; ... 阅读全文
posted @ 2014-08-22 22:14 jdflyfly 阅读(379) 评论(0) 推荐(0)
摘要:Related leetcode questions: BST: https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/ BT, node always in the tree. https://le 阅读全文
posted @ 2014-08-21 00:55 jdflyfly 阅读(220) 评论(0) 推荐(0)
摘要:5 / \ 2 6 / \ \ 1 4 7 / 3class Node{ Node left; Node right; Node parent; int val;}/**1.如果有右子树,则结果为右子树的最左节点。... 阅读全文
posted @ 2014-08-21 00:28 jdflyfly 阅读(350) 评论(0) 推荐(0)
摘要:结合之前实现的 maxStack 和 用两个stack 实现一个Queue, 实现 MaxQueueimport java.util.Stack;public class MaxQueue { MaxStack in = new MaxStack(); MaxStack out = ne... 阅读全文
posted @ 2014-08-20 00:53 jdflyfly 阅读(667) 评论(0) 推荐(0)
摘要:思路:用两个栈,一个用于接收(in),一个用于输出(out),输出前如果out为空需要将in中的数据导入out。import java.util.Stack;//用两个stack设计一个队列 p142public class MyQueue { Stack in; Stack out; ... 阅读全文
posted @ 2014-08-20 00:16 jdflyfly 阅读(139) 评论(0) 推荐(0)
摘要:模拟汉诺塔的移动过程,CC答案的面向对象的太烦,写个以前学的经典的。public class Solution { public void move(int n, char a, char b, char c) { if (n == 1) { System.... 阅读全文
posted @ 2014-08-20 00:02 jdflyfly 阅读(135) 评论(0) 推荐(0)
摘要:按照算法导论上的实现,不过把下标改成从0开始了。原理:import java.util.Arrays;public class Solution { /** * 每次将堆顶元素交换到最后并从堆中除掉。 * * @param a */ public sta... 阅读全文
posted @ 2014-08-14 22:12 jdflyfly 阅读(223) 评论(0) 推荐(0)
摘要:汉诺塔问题:P141用两个stack设计一个队列 p142 结合上题,队列实现max操作,要求尽量提高效率。(编程之美)找出二叉树中指定节点的下一个节点(中序后继),假定每个节点有父指针。p154二叉树某两个节点的公共祖先。p155判断T2是否是T1的子树。p159打印二叉树节点数值总和等于某个给... 阅读全文
posted @ 2014-08-11 22:26 jdflyfly 阅读(575) 评论(0) 推荐(0)
摘要:Describe how you could use a single array to implement three stacks.思路1:fixed divisionpackage Question3_1;import java.util.EmptyStackException;public ... 阅读全文
posted @ 2014-08-09 21:41 jdflyfly 阅读(277) 评论(0) 推荐(0)
摘要:采用算法导论上的实现方式,用java实现。快排算法核心的部分便是partition过程,这里的partition采取最后一个元素作为pivot,i和j两个指针都从头向后扫描,如下图所示,数组被分为4个部分。算法执行的过程:代码实现:包括快速排序, 寻找第K大元素, 洗牌算法。import java.... 阅读全文
posted @ 2014-08-07 15:38 jdflyfly 阅读(850) 评论(1) 推荐(0)
摘要:分别利用 锁、信号量、同步监视器实现了生产者消费者问题。package thread;import java.util.Random;import java.util.concurrent.Semaphore;import java.util.concurrent.locks.Condition;i... 阅读全文
posted @ 2014-08-05 09:43 jdflyfly 阅读(294) 评论(0) 推荐(0)
摘要:Sort a linked list inO(nlogn) time using constant space complexity.https://oj.leetcode.com/problems/sort-list/思路:归并排序,递归执行。public class Solution { ... 阅读全文
posted @ 2014-08-04 23:55 jdflyfly 阅读(188) 评论(0) 推荐(0)
摘要:Given a digit string, return all possible letter combinations that the number could represent. 阅读全文
posted @ 2014-08-04 19:27 jdflyfly 阅读(380) 评论(3) 推荐(0)