Path In Zigzag Labelled Binary Tree
给一个二叉树, 里面的label是zigzag的, 给一个val, 求val到root路径. 这题看似求路径, 实测是二进制的题,因为是zigzag的. 所以从val本身出发看, 比如val是例题的14, 那么14的二进制是1110, 14上一个node是4, 4的二进制是100, 可以看出规律是 1110 先右移 变成111, 然后翻转除了第一个digit外的所有digit. 可以随便拿别的node验证一下这个算法.
给一个二叉树, 里面的label是zigzag的, 给一个val, 求val到root路径. 这题看似求路径, 实测是二进制的题,因为是zigzag的. 所以从val本身出发看, 比如val是例题的14, 那么14的二进制是1110, 14上一个node是4, 4的二进制是100, 可以看出规律是 1110 先右移 变成111, 然后翻转除了第一个digit外的所有digit. 可以随便拿别的node验证一下这个算法.
给一个2d数组, 里面是0和1, 问怎么反转row和column, 值得所有row的和的值最大. 这题是贪婪算法, 首先找第一列中有0的, 翻转, 然后找第二列后边, 每列1比0少的, 翻转即可.
给一个bst, 插入val. 模板题
给一个数组, 里面是各种unique的数字, 代表卡牌, 给一系列规则,一直翻上边的数字, 然后把后边的数字放到最后, 求如何改变使得原数组生成递增的序列. 这题就是从后往前想, 模拟一下过程即可.
给一个DAG, 求最小的set, 里面的点组成的路径可以到达所有点. 这题必有答案, 而且答案唯一 因为最后一句话, 所以直接找入度为0的点即可.
给一个数字n, 表示n个team, 每次规定一个比赛是最强的打最弱的, 依次比赛, 求比赛队伍的输出. 模拟运行一下就行.
给一个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比
给一个数组, 每次选三个数字, 只能拿到第二大的, 问怎么选的最大. 这题就是贪婪, 多看几个例子就知道, 因为拿不到最大的,所以排序后, 大端选两个, 小端选一个.