在网格中寻找不包含给定点集的最大正方形:最优时间复杂度分析
这个问题可以用二分答案的思想来解决。
首先,我们可以二分正方形的边长,假设当前二分的边长为'mid'。然后我们可以遍历整个网格,对于每个网格中心点,判断以它为正方形右下角的边长为'mid'的正方形是否合法。如果合法,那么我们就继续增加'mid'的值,否则就减小'mid'的值。
如何判断以一个点为正方形右下角的正方形是否合法呢?我们可以观察到,如果一个正方形的右下角位于点(x,y),那么它的左上角就位于点(x-mid+1,y-mid+1)。因此,我们只需要判断左上角到右下角之间是否存在给定的点即可。可以使用哈希表来判断是否存在。
时间复杂度为O(n^2logn),其中'n'为网格边长。
原文地址: https://www.cveoy.top/t/topic/nEVB 著作权归作者所有。请勿转载和采集!