摘要:
shuffle:递归的思考,假如n-1个元素已经shuffle好了,第n个元素应该从0~n的范围内选择交换目的地。一直递归到一个元素的shuffle情况。n选m:假如n-1个元素中选m的情况已经好了,那么对于第n个元素,可以在0~n的范围内随机的选取一个元素,如果选的元素在m范围内,那就剔除掉原有的... 阅读全文
摘要:
先异或求sum,然后求carry,二者的和就是结果,可使还是不能用加号,递归执行,直到b==0。因为每次carry都移位右边多出一个零,然后下一次&的时候必然后面会是0,所以每递归调用一次b后面就多一个零,直到b==0.public class Solution { public static... 阅读全文
摘要:
track操作类似与插入操作。rank操作返回比当前元素小或者相等的元素数。思路:track操作插入构造BST(没有保证平衡),但是节点增加一个leftSize,这里学习一下。public class Solution { private static RankNode root = null... 阅读全文
摘要:
思路:定义好Person的数据结构,按照身高和体重排好序。solutions[i]代表以person[i]结尾的能够叠起的最多人的解。solutions[0]初始化,然后求从1~n的情况。import java.util.ArrayList;import java.util.Collections;... 阅读全文
摘要:
二分法变体,当查找到mid元素是空串时,同时向两边扩散寻找不为空串的索引作为mid,继续执行二分。public class Solution { public int search(String[] list, String str) { if (list == null || ... 阅读全文
摘要:
思路:递归执行,子函数需要返回子链表的head和tail,所以借助内部类NodePair来实现。/** * 4 / \ 2 5 / \ \ 1 3 6 / 0 0123456 * */public ... 阅读全文
摘要:
思路: 枚举分割点递归求解,可用DP优化。 注意递归终止条件。 注意 ^ & | 三种情况统计的不同。import java.util.HashMap;import java.util.Map;public class Solution { int countR(String terms,... 阅读全文
摘要:
递归求解,求出已某个箱子为底,返回最高可以放的箱子堆。DP思想优化,对于已经求过的已某个箱子为底的情况,用一个map记录下来,以后直接返回即可。 注意一些clone等一些语言细节。import java.util.ArrayList;import java.util.HashMap;import ... 阅读全文