【发布时间】:2022-01-10 17:54:40
【问题描述】:
我正在解决一些 leetcode 问题并遇到了这个问题:
给定一个二维数组,例如:
given[][] = { {1, 6, 2},
{1, 6, 4},
{1, 9, 2} }
数组中的每个单元格代表我必须从该单元格移动的次数。每次停在一个单元格上时,我只能向上或向左移动。我想找到从数组右下角到左上角单元格所需的最少移动次数。
例如,在给定的数组中,我应该返回 2,从 given[2][2] 到 given[0][2] 到 given[0][0],因为这是最短的可能路径。如果无法到达左上角,我应该返回-1。
我什至不知道从哪里开始。任何人都可以提供任何指示吗?我在想我可以将其表示为图表并应用 Djikstra 算法,但我不知道这是否是一个可行的解决方案。
【问题讨论】:
-
做,只是从右下角开始的 BFS。始终检查边界,并确保您不会通过跟踪访问的单元格来重复访问。您首先登陆
0, 0将是最短路径 -
另外,我很好奇。想链接吗?
-
如果你可以only向上或向左移动,这是否意味着这里只有两个可能的正确遍历(长度为2和3)?
-
@user1984 我的一个朋友给我发了这个问题,让我看看它——我不确定它来自哪里:(
-
@chrylis-cautiouslyoptimistic- 是的,有一个长度为 3 的有效遍历,但由于还有一个长度为 2 的遍历,所以我只返回它,因为它更小。