def find_local_sink(m: List[List[int]], start: List[int]) -> List[int]:
"""
Examples
>>> m = [[ 5,70,71,80],
[50, 4,30,90],
[60, 3,35,95],
[10,72, 2, 1]]
>>> find_local_sink(m, [0,0])
[3,3]
>>> m = [[ 5,70,71,80],
[50, 4, 5,90],
[60, 3,35, 2],
[ 1,72, 6, 3]]
>>> find_local_sink(m, [0,3])
[2,3]
>>> m = [[9,2,3],
[6,1,7],
[5,4,8]]
>>> find_local_sink(m, [1,1])
[1,1]
"""
lowest_point = m[0][0]
for i in range(len(m)):
for j in range(len(m)):
if m[i][j] < lowest_point:
lowest_point = m[i][j]
print(lowest_point)
return find_local_sink
给出一个列表或点。我想返回下一个最低点。我试图弄清楚该怎么做。大量的文档字符串都是测试用例,用于显示所需的预期结果。问题是它不会返回下一个最小的项目,而是返回整体最小的项目。所有它不返回索引,而是仅返回值
答案 0 :(得分:0)
您的代码未使用start
参数,这就是为什么它会打印总体最小值。更改for
循环中的范围,以使用start
的元素作为起始值。
此外,如果需要该值,该函数应返回lowest_point
;如果您需要索引,请使用一个额外的变量来跟踪它们:
def find_local_sink(m, start):
lowest_point = m[start[0]][start[1]]
lowest_index = [[start[0], start[1]]
for i in range(start[0], len(m)):
for j in range(start[1], len(m)):
if m[i][j] < lowest_point:
lowest_point = m[i][j]
lowest_index = [i, j]
return lowest_index # or: return lowest_point