golang實現劍指offer 動態規劃題型

2021-10-05 02:02:20 字數 1935 閱讀 7152

leetcode 面試題49:醜數

題目描述

我們把只包含因子 2、3 和 5 的數稱作醜數(ugly number)。求按從小到大的順序的第 n 個醜數。

示例:

輸出: 12

解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。

核心思想:

解題思路:

func nthuglynumber(n int) int 

dp := make(int, n)

//第乙個醜數,即1

dp[0] = 1

//三指標初始指向陣列第乙個元素

p2, p3, p5 := 0, 0, 0

cur := 1

for cur < n

if minval == dp[p3]*3

if minval == dp[p5]*5

cur++

} return dp[cur-1]

}func min(a, b, c int) int

return c

} if b < c

return c

}

leetcode 面試題47

題目描述:

在乙個 m*n 的棋盤的每一格都放有乙個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格仔裡的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定乙個棋盤及其上面的禮物的價值,請計算你最多能拿到多少價值的禮物?

示例:

輸入:

[[1,3,1],

[1,5,1],

[4,2,1]

]輸出: 12

解釋: 路徑 1→3→5→2→1 可以拿到最多價值的禮物

核心思想:

解題思路:

func maxvalue(grid int) int 

col := len(grid[0])

if col == 0

//從格仔最後一行開始

for i := row - 1; i >= 0; i--

//獲取下邊格仔的價值

if i < row-1

//比較,計算當前格仔最大價值,原地修改

grid[i][j] = grid[i][j] + max(tmp1, tmp2)

} }return grid[0][0]

}func max(a, b int) int

return b

}

leetcode 面試題10-ii

題目描述

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回1.

示例

輸入:n = 2

輸出:2

核心思想

實現**

func

numways

(n int

)int

num1,num2 :=1,

1 res :=

0for i:=

2;i <=n ;i ++

return res

}

複雜度分析

golang劍指offer 010 最長上公升子串行

最長上公升子串行一定是與次長自序列有關係的,因此可以考慮使用動態規劃解題。狀態定義 dp i 表示以nums i 結束的最長上公升子串行長度 規劃過程 需要考慮兩種情況 但存在這樣的情況,nums i 前面存在多個比他小的元素,j,k,l,此時應該是對三個進行對比,選擇最大的 dp i max dp...

劍指offer全套解答 劍指offer 1 5

1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。public class solution int n array 0 length i...

劍指offer全套解答 劍指offer 36 45

36.兩個鍊錶的第乙個公共節點 輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 public class solution return p 37.數字在排序陣列 現的次數 統計乙個數字在公升序陣列 現的次數。publi...