Letter Tile Possibilities
给一个string, 问里面的字符能组成多少种string. 简单的组合问题.直接dfs
给一个string, 问里面的字符能组成多少种string. 简单的组合问题.直接dfs
给一个2d数组, 里面每个row都是严格递增排序的, 求最小的row公共元素. 排序所以用二叉搜索, 正好std::binary_search返回的是true/false.
设计一个stack, 有一个函数可以增加stack中底部向上k个数. 这个一看就要用cpp做, 直接vector, 原因是可以random access, 有现成的pop_back()和pop(). 然后我刚知道v.size()返回不是int, 是unsigned int, 还不能直接用min比
给一个数组, 每次选三个数字, 只能拿到第二大的, 问怎么选的最大. 这题就是贪婪, 多看几个例子就知道, 因为拿不到最大的,所以排序后, 大端选两个, 小端选一个.
给一个数组, 里面是同样长度的string, 求这个string组成的grid是否对应的每列都是字典序的
给一个DAG(有向无圈图), 求从0到n-1的所有路径. 直接dfs
给一个二叉树, 里面有random pointer, 求deep copy这个二叉树.
给一个postfix的表达式数, 让设计一个Node, 里面有evaluate方法, 可以算出答案. 这个题是偏设计, 所以一般不用全局的stack算, 上来给了个node的抽象类, 然后通过观察可以看到有数字+加减乘除几种node组成, 分辨写出这几个node. 然后输入的string是postfix, 所以只需要从后往前一个个扫描即可建树.
给一个2d数组, 求不改变里面数字对应行列最大值的情况下, 数组数字最大增加多少. 这题读懂题很关键, 先找行列对应的最大值, 然后再用两个值中小的那个减去现有的值, res += min(row[i], col[j]) – grid[i][j], where row[i], col[j] is the max number of i, j.