Seat Reservation Manager
设计一个座位预约系统. 用treeset,因为里面有可以直接访问第一个可用key的方法.
设计一个座位预约系统. 用treeset,因为里面有可以直接访问第一个可用key的方法.
给一个数组, 求做完下k次permutation后数组通过几个swap能变回原数组. 这题就是先做k permutation, 然后比较两个数组的不同位置, 找到同样的数字后, swap回来, 因为求的是minimum swap, 所以如果数字相同的情况下, 只要找最邻近做swap即可.
给一个数组, 一个整数start和一个整数target, 求数组离start的index最近的数等于target的. 这题就是从start的index周围开始找. 注意一下边界.
设计一个浏览器的历史记录. 这题我用的是vector, 因为我看到题目要求的visit方法需要把某一点后边所有的历史记录全删除, 所以用cur记录当前访问的位置, 然后用resize()删除[cur+1, v.size() – 1]的范围.
给一个String和一个整数k, 返回k长度的没有重复字符的substring. 这题就是先找所有的没有重复字符substring, 然后看长度是不是k.
给一个robot的api, 问如何清洁一个room. 这题是设计题, 主要还是考虑怎么设计robot的走位, 肯定是dfs没错, 因为room的大小不知道, 所以要按照一定顺序走, 因为robot开始的时候是向上的, 所以按照上右下左开始顺时针走, 并且记录路径. 然后在走不通的时候, 应该统一向一个方向转, 这里选择向右.
给一个string数组和一个pattern string, 求满足这个pattern的string. 因为是pattern, 所以用两个map互相把里面的char建立mapping即可.
给一个二叉树, 里面的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. 模板题