解法一:
class Solution(object):def invertTree(self, root):if not root:return Noneroot.left, root.right = root.right, root.leftself.invertTree(root.right)self.invertTree(root.left)return root
解析:遞歸
解法二:
class Solution(object):def invertTree(self, root):if not root:return Nonequeue = [root]while queue:tmp = queue.pop(0)tmp.left, tmp.right = tmp.right, tmp.leftif tmp.left:queue.append(tmp.left)if tmp.right:queue.append(tmp.right)return root
解析:從上往下依次將當下根節點放入隊列中,然后交換其左右節點?
class Solution(object):def maximalSquare(self, matrix):m, n = len(matrix), len(matrix[0])dp = [[0] * (n +1) for _ in range(m + 1)]ans = 0for i in range(m):for j in range(n):if matrix[i][j] == "1":dp[i + 1][j +1] = min(dp[i][j], dp[i + 1][j], dp[i][j + 1]) + 1if dp[i + 1][j +1] > ans:ans = dp[i + 1][j +1]return ans ** 2
解析:典型動態規劃,狀態轉移公式dp[i+1][j+1]=min(dp[i][j],dp[i+1][j],dp[i][j+1])+1
?
?