题目 | 思路 | 备注 |
---|---|---|
杨辉三角 | 边缘是1,内部每个元素都是上边两个元素之和 | f[i][j] = (j==0 || j==i) ? 1: f[i-1][j-1]+f[i-1][j]; |
逆波兰表达式求值 | 逆波兰表达式即是后缀表达式,可以用栈直接求值 | |
多数元素 | 对拼消耗(摩尔投票法) | |
任务调度器 | 示例: [A,b,b,A,b,b,A], 三个高频任务A,假设同类型需要间隔2个单位,则前(3-1)个A每个都要搭配一个非A或待命单位(假设是b),最后加一个单独的A,即是总时间: [A,b,b]2+A = (n+1)(m-1)+1. - 不过要注意的时,可能存在多个频率相同且是最大的元素, 且x个任务至少需要x个时间单位,即结果须>=x |
|
根据身高重建队列 | 整体不难,关键只有两行代码,一是排序,二是插入 1. 先排序数组,按身高h降序,按个数k升序排一下序 1. 从最高的h开始选,依次插入到列表中对应的第k位置 |
为什么这样是对的呢?
- 因为每次插的是剩余元素中h最大的值,要求是前方比其高的有k个人,而比其高的人都已经在列表中了,那它必然应插在第k个位置,才能刚好满足条件
| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |