复盘|第323场周赛
删除每行中的最大值
【排序】问题等价于把每行排序之后,求每列的最大值。
数组中最长的方波
【暴力枚举】数组元素最小为2,1e5上界,2的平方的子序列长度事实上很短,直接暴力枚举每个起始点,最多循环loglog(max(nums))次。
【记忆化搜索】
设计内存分配器
【数组模拟】用数组表示内存,初始化为0,allocate是找最左侧的连续的长度为size的0,free是从左到右释放id。
矩阵查询可获得的最大分数
【并查集】把矩阵元素和询问都排序,双指针遍历矩阵元素值和询问,如果矩阵元素值小于询问值,把各自和周围四个格子中小于询问值的格子相连,用并查集实现这个过程,同时维护每个连通块的大小,ans = 左上角连通块大小(左上角小于询问值)。
【最小堆】从左上角出发向外搜索,初始把左上角的元素值及其坐标入堆,对每个询问,不断循环,如果堆顶元素值小于询问值,则弹出,继续搜索,循环结束时,出堆的个数就是答案。