在 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 矩阵?
解决了。我用不同的输入作为指标模块化了我的功能。
给定一个 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 矩阵?
解决了。我用不同的输入作为指标模块化了我的功能。