求出n×m二维整数数组中的所有逆鞍点。这里的逆鞍点是指在其所在的行上最大,在其所在的列上最小的元素。若存在逆鞍点,则输出所有逆鞍点的值及其对应的行、列下标。若不存在逆鞍点,则输出“Not”。要求至少使用一个自定义函数。
时间: 2023-12-17 22:03:26 浏览: 130
求一个二维数组的鞍点
好的,这是一个经典的算法问题。我可以给你讲解一下实现的思路,并提供一个使用自定义函数的 Python 代码示例。
首先,我们可以定义一个函数来寻找二维数组中的逆鞍点。该函数的输入参数为一个 n 行 m 列的二维数组,输出为一个包含所有逆鞍点的值及其对应的行、列下标的列表。具体实现的思路如下:
1. 遍历数组中的每一个元素,对于每个元素,都要判断它是否是逆鞍点。
2. 对于每个元素,我们需要找到它所在的行和列,分别对行和列进行扫描,找到该行中的最大值和该列中的最小值。
3. 如果该元素既是所在行中的最大值,又是所在列中的最小值,那么它就是一个逆鞍点,将其值及其行、列下标添加到结果列表中。
4. 最后返回结果列表。
下面是使用 Python 实现的代码示例:
```python
def find_inverse_saddle(matrix):
res = []
n, m = len(matrix), len(matrix[0])
for i in range(n):
for j in range(m):
val = matrix[i][j]
row_max = max(matrix[i])
col_min = min(matrix[k][j] for k in range(n))
if val == row_max and val == col_min:
res.append((val, i, j))
return res if res else "Not"
```
这里我们使用了 Python 的内置函数 `max` 和 `min` 来分别找到行中的最大值和列中的最小值,从而判断当前元素是否为逆鞍点。最后,如果找到了逆鞍点,就返回结果列表,否则返回字符串 "Not"。
希望这个解答能够帮助到你,如果你有任何疑问或其他问题,可以随时问我。
阅读全文