如果您有两个维度为N*M的矩阵,那么获取差异矩形的最佳方法是什么?
示例:
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
2 3 4 5 4 3 2 3 <---> 2 3 2 3 2 3 2 3
2 3 4 5 2 3 2 3 2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
|
|
\ /
Rect([2,2] , [3,4])
4 5 4
4 5 2-> A (2 x 3 Matrix)
我能想到的最好方法是从左上角开始扫描,直到找到有差异的点。然后从右下角开始扫描,找到有差异的点。
但是在最坏情况下,这需要O(N*M)的时间复杂度。有更高效的算法吗?或者我是否可以通过改变矩阵的表示方式来应用更高效的算法?请注意,这个矩阵可能非常大。