【面試題47】禮物的最大價值

在這裏插入圖片描述
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]

考點

  • 考查用動態規劃分析問題的能力。能夠熟練應用動態規劃分析問題是解答這道面試題的前提;
  • 考查對遞歸及時間效率的理解。如果只是能夠把遞歸分析轉換爲遞歸代碼,則應聘者不一定能夠通過這道面試題。需要用基於循環的代碼來避免不必要的重複計算。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章