Python題解
class Solution:
def getMaxValue_solution1(self, values):
if not values:return 0
rows, cols = len(values), len(values[0])
maxValues = [[0 for i in range(cols)]for j in range(rows)]
for i in range(rows):
for j in range(cols):
left, up = 0, 0
if i > 0:up = maxValues[i-1][j]
if j > 0:left = maxValues[i][j-1]
maxValues[i][j] = max(left, up) + values[i][j]
return maxValues[rows-1][cols-1]
def getMaxValue_solution2(self, values):
if not values:return 0
rows, cols = len(values), len(values[0])
maxValues = [0 for i in range(cols)]
for i in range(rows):
for j in range(cols):
left, up = 0, 0
if i > 0:up = maxValues[j]
if j > 0:left = maxValues[j-1]
maxValue[j] = max(left, up) + values[i][j]
return maxValues[rows-1][cols-1]
考點
- 考查用動態規劃分析問題的能力。能夠熟練應用動態規劃分析問題是解答這道面試題的前提;
- 考查對遞歸及時間效率的理解。如果只是能夠把遞歸分析轉換爲遞歸代碼,則應聘者不一定能夠通過這道面試題。需要用基於循環的代碼來避免不必要的重複計算。