给定宽度为width
且高度为height
的矩形网格,矩形由四个自然数left
,right
定义, top
和bottom
,满足:
left < right
和top < bottom
; left
; 中的right
和[1, width]
范围top
中的bottom
和[1, height]
。矩形的角落是坐标(left, top)
,(right, top)
,(left, bottom)
和(right, bottom)
处网格的位置。
给定矩形的整数网格,矩形的值是矩形角上网格中数字的总和。有一个有效的算法,给定这样的网格,找到一个具有最大值的矩形?如有必要,我们可以约束网格中的数字范围。
蛮力算法在网格大小width * height
中是二次方的,因为每对(left, top)
和(right, bottom)
都有线性选择。但我想知道这个问题是否可以在线性,线性或类似时间内解决。
答案 0 :(得分:2)
假设网格为m×n,m≤n。这是一个O(m 2 n)时间算法。对于每对行(m选择2),计算它们的元素和,并考虑结果向量的两个最大条目的总和。