我会诚实地告诉你,这是一个作业问题,但我就是找不到解决方案。请记住,我不是要答案,只是需要一些指导。
问题: 设计一个算法,以O(n)时间(线性)运行,可以在2D网格上定位单个可疑房屋(点)。如果它消耗了等于或大于其两个垂直和两个水平邻居的电力消耗,则它是可疑的。注意:只需返回一个可疑的房子。
解决方案: 甚至不确定如何实现这样的解决方案。如果您检查n个房屋,还可以检查其四个周围的邻居。4n/n ^ 2,简化为4 / n。这意味着随着网格的扩展,很少能找到可疑的房屋。
我尝试过的: - 不同的数据结构(大多数是nlogn) - 折叠网格(再次nlogn)
提前致谢。
编辑: 我的错误,网格是(n x n),使房屋数量为n ^ 2,对此混淆感到抱歉。
编辑2: 这正是问题,也许我读错了吗?
警察正在寻找特别高的电力消耗的房屋。为了简化问题,想象他们正在调查布置在n×n网格上的房屋。网格上的每个房子都有一些电力消耗,e(i,j)。如果它的电力消耗等于或大于其垂直和水平邻居中的每一个,则警察认为该房屋可疑。设计一个算法,在O(n)时间内返回可疑房屋的位置。
问题: 设计一个算法,以O(n)时间(线性)运行,可以在2D网格上定位单个可疑房屋(点)。如果它消耗了等于或大于其两个垂直和两个水平邻居的电力消耗,则它是可疑的。注意:只需返回一个可疑的房子。
解决方案: 甚至不确定如何实现这样的解决方案。如果您检查n个房屋,还可以检查其四个周围的邻居。4n/n ^ 2,简化为4 / n。这意味着随着网格的扩展,很少能找到可疑的房屋。
我尝试过的: - 不同的数据结构(大多数是nlogn) - 折叠网格(再次nlogn)
提前致谢。
编辑: 我的错误,网格是(n x n),使房屋数量为n ^ 2,对此混淆感到抱歉。
编辑2: 这正是问题,也许我读错了吗?
警察正在寻找特别高的电力消耗的房屋。为了简化问题,想象他们正在调查布置在n×n网格上的房屋。网格上的每个房子都有一些电力消耗,e(i,j)。如果它的电力消耗等于或大于其垂直和水平邻居中的每一个,则警察认为该房屋可疑。设计一个算法,在O(n)时间内返回可疑房屋的位置。