最近我参加了一家公司(以M开头,以A结尾)的面试,他们问了我这个问题。由于我还在练习算法,所以希望有人能帮助我理解如何解决这个问题,以及类似的问题。
问题:
你被给定2个数组,例如:
D = [10,7,13,12,4]
R = [5,12,7,10,12]
D
表示从城市 A
到城市 B
的航班的出发价格。 R
表示从城市 B
到城市 A
的航班的回程价格。找到往返城市 A
和城市 B
之间的最低往返机票费用。例如,本例中的最小值为 D[1] + R[2]
。
(只能在同一或更高索引的出发航班上搭乘返程航班)
棘手的部分是显然你必须先出发再返回。
天真的方法是使用双重循环组合所有可能性。但是,我知道有一种更好的方法,但我想不出来。我相信我们要创建某种临时数组以记录目前为止的最小值之类的东西……
谢谢阅读。
D[i]
,您可以使用返回的航班R[i]
及以上或者R[i+1]
及以上? - user1984