在 O(N) 时间内在二维数组中找到局部最小值

Finding local minima in 2D array, in O(N) time

给定一个 NxN 矩阵,其中所有数字都是唯一的,请在 O(N) 时间内找到任何局部最小值。这是矩阵的示例。它在

中给出
lst = [[30,100,20,19,18],
       [29,101,21,104,17],
       [28,102,22,105,16],
       [27,103,23,106,15],
       [26,25,24,107,14]]

所以在O(N)时间内解决它的方法是基本上将列表分成4个部分(“windows”),找到绿色(中间)中的最小元素row & column) 并将其与下一个“相邻”最小值进行比较。如果不小于它的邻居,则递归到左上角、右上角、左下角、右下角,具体取决于小于 mid_smallest 的位置。

(幻灯片 20) https://courses.csail.mit.edu/6.006/spring11/lectures/lec02.pdf

到目前为止我已经写好了所有内容,但我真的很难找到一种方法来递归 4 个部分之一:这是伪代码:

我遇到困难的部分是递归部分例如:Find_find_minimum(Top-left_sub_matrix)

如何在不创建另一个矩阵的情况下递归顶部 left/right 或底部 left/right 矩阵?

解决了。我用不同的输入作为指标模块化了我的功能。