Surface Area of 3D Shapes
给一个2d数组, 里面是数字是当前坐标的叠着的正方体数, 求一共多少个面. 这个题就是弄清楚两个正方体分享一个面, 所以计算的时候要先比较相邻正方体的高矮, 然后减去矮的部分共享的面数即可. 然后数组值可能为0(没有正方体)
给一个2d数组, 里面是数字是当前坐标的叠着的正方体数, 求一共多少个面. 这个题就是弄清楚两个正方体分享一个面, 所以计算的时候要先比较相邻正方体的高矮, 然后减去矮的部分共享的面数即可. 然后数组值可能为0(没有正方体)
给一个数组, 里面是0和1, 求里面的1互相之间是否至少隔k个数.
设计一个runlength压缩后的string的iterator.
给一个binary的string, 求里面有多少个substring是有相同的个数1和0. 这个题直接就count, 然后sliding windows, 然后简化到了只需要记录不同的0 和1的group的最小的.
给一个数字, 求基数为k的digits的和.
给一个数字maxbit和一个sorted array, 求返回一个array, 里面的数字是k个query的结果, k是一个数字, 他是数组中每个数字的xor后最大不超过2^maxbit的数的可能数字. 这个题主要先理解题目, 然后已知xor运算是互逆的, 所以先算出所有数的xor, 然后再往前逐个xor即可得到前边数字的xor的数字, 设这个数字为x. 其次, 假设x是3, maxbit是5. 3的二进制就是11, (2^5 -1)的二进制是1111. 因为后边是4位, 所以前边的3可以看做是0011, 那么问题转化成, 1111和0011的最大xor可能取值是多少, 就是1100(1111 xor 0011).
给一个链表, 删除里面所有重复的元素, 链表本身不是已排序的. 因为没有排序, 所以要用set查重. 然后新建个链表返回即可.
给一个数组, 是个圈, 里面有n个人编号为[1..n], 每次游戏踢出第k个, 问剩下的标号是多少 这个就模拟一下吧. 我用set标示被踢出的. 然后当set的大小等于n-1 剩下没标到的就是答案.
给一个2d数组是points, 然后给一个数组里面是queries, query里面有一个圆的圆点坐标x,y和半径r, 求这个圆里面有多少个点. 这个题就是利用每个query的圆点位置和points的位置求解
这个题是看了hint, 发现如果一个十进制数字的三进制表示有2, 那么这个十进制数不是答案.