funcaddStrings(num1 string, num2 string)string { var res string// 计算结果 var c int// 上一位的进位 for i, j:= len(num1)-1, len(num2)-1; i>=0 || j>=0; i, j = i-1, j-1 { var n1, n2 int// 当前位 var sum int//本位和 if i >= 0 { n1 = int(num1[i]-'0') } // else{n1 = 0} if j >= 0 { n2 = int(num2[j]-'0') } // else{n2 = 0} sum = c + n1 + n2 // 计算本位和 res = string(sum%10+int('0')) + res // 结果加在前面 c = sum/10// 下一位进位 }
if c != 0 { // 加上最高位进位 res = string(c+int('0')) + res }
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ funclowestCommonAncestor(root, p, q *TreeNode) *TreeNode { if root == nil || root == p || root == q { // 若当前根节点为p或者q,直接返回(最近公共祖先不会比当前根更低) return root }
// 递归的在左右子树中查找 left := lowestCommonAncestor(root.Left, p, q) right := lowestCommonAncestor(root.Right, p, q)
if left == nil { // 左子树没有p或者q,返回右子树 return right }
if right == nil { // 左子树没有p或者q,返回左子树 return left }