diff --git "a/problems/0005.346円234円200円351円225円277円345円233円236円346円226円207円345円255円220円344円270円262円.md" "b/problems/0005.346円234円200円351円225円277円345円233円236円346円226円207円345円255円220円344円270円262円.md" index d53acf63e6..6e407d6e99 100644 --- "a/problems/0005.346円234円200円351円225円277円345円233円236円346円226円207円345円255円220円344円270円262円.md" +++ "b/problems/0005.346円234円200円351円225円277円345円233円236円346円226円207円345円255円220円344円270円262円.md" @@ -363,6 +363,34 @@ class Solution: Go: ```go +func longestPalindrome(s string) string { + maxLen := 0 + left := 0 + length := 0 + dp := make([][]bool, len(s)) + for i := 0; i < len(s); i++ { + dp[i] = make([]bool,len(s)) + } + for i := len(s)-1; i>= 0; i-- { + for j := i; j < len(s); j++ { + if s[i] == s[j]{ + if j-i <= 1{ // 情况一和情况二 + length = j-i + dp[i][j]=true + }else if dp[i+1][j-1]{ // 情况三 + length = j-i + dp[i][j] = true + } + } + } + if length> maxLen { + maxLen = length + left = i + } + } + return s[left: left+maxLen+1] +} + ``` diff --git "a/problems/0100.347円233円270円345円220円214円347円232円204円346円240円221円.md" "b/problems/0100.347円233円270円345円220円214円347円232円204円346円240円221円.md" index 9820173d8e..07c477e6ef 100644 --- "a/problems/0100.347円233円270円345円220円214円347円232円204円346円240円221円.md" +++ "b/problems/0100.347円233円270円345円220円214円347円232円204円346円240円221円.md" @@ -237,6 +237,26 @@ class Solution: return True ``` Go: +> 递归法 +```go +func isSameTree(p *TreeNode, q *TreeNode) bool { + if p != nil && q == nil { + return false + } + if p == nil && q != nil { + return false + } + if p == nil && q == nil { + return true + } + if p.Val != q.Val { + return false + } + Left := isSameTree(p.Left, q.Left) + Right := isSameTree(p.Right, q.Right) + return Left && Right +} +``` JavaScript: diff --git "a/problems/0129.346円261円202円346円240円271円345円210円260円345円217円266円345円255円220円350円212円202円347円202円271円346円225円260円345円255円227円344円271円213円345円222円214円.md" "b/problems/0129.346円261円202円346円240円271円345円210円260円345円217円266円345円255円220円350円212円202円347円202円271円346円225円260円345円255円227円344円271円213円345円222円214円.md" index 92a72fe328..859df39e6f 100644 --- "a/problems/0129.346円261円202円346円240円271円345円210円260円345円217円266円345円255円220円350円212円202円347円202円271円346円225円260円345円255円227円344円271円213円345円222円214円.md" +++ "b/problems/0129.346円261円202円346円240円271円345円210円260円345円217円266円345円255円220円350円212円202円347円202円271円346円225円260円345円255円227円344円271円213円345円222円214円.md" @@ -250,22 +250,22 @@ Go: ```go func sumNumbers(root *TreeNode) int { - sum = 0 - travel(root, root.Val) - return sum + sum := 0 + dfs(root, root.Val, &sum) + return sum } -func travel(root *TreeNode, tmpSum int) { - if root.Left == nil && root.Right == nil { - sum += tmpSum - } else { - if root.Left != nil { - travel(root.Left, tmpSum*10+root.Left.Val) - } - if root.Right != nil { - travel(root.Right, tmpSum*10+root.Right.Val) - } - } +func dfs(root *TreeNode, tmpSum int, sum *int) { + if root.Left == nil && root.Right == nil { + *sum += tmpSum + } else { + if root.Left != nil { + dfs(root.Left, tmpSum*10 + root.Left.Val, sum) + } + if root.Right != nil { + dfs(root.Right, tmpSum*10 + root.Right.Val, sum) + } + } } ```