type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func isBalanced(root *TreeNode) bool { return chs(root)!=-1 } func chs(root *TreeNode)int { if root==nil{ return 0 } l:=chs(root.Left) if -1 == l { return l } r:=chs(root.Right) if -1 == r { return r } if math.Abs(float64(l)-float64(r))<2{ return -1 } return int(1 + math.Max(float64(l), float64(r))) }
在力扣上一直报错然后发现右树放了左树的值检查不仔细。
===============
连接数据库
import ( "database/sql" "fmt" "strconv" "time" ) var db=&sql.DB{} func init() { //Oracle的 db, err := sql.Open("oci8", "scott(账号)/tiger(密码)@(ip:端口)/库名") //Msql的 db,_ = sql.Open("mysql", "root():root(密码)@(地址)/test(库名)?charset=utf8") } func main() { xt, err :=db.Begin() fmt.Println("",db,err,xt) //insert start := time.Now() //Begin函数内部会去获取连接 tx,_ := db.Begin() for i := 1301;i<=1400;i++{ //每次循环用的都是tx内部的连接,没有新建连接,效率高 tx.Exec("INSERT INTO user(uid,username,age) values(?,?,?)",i,"user"+strconv.Itoa(i),i-1000) } //最后释放tx内部的连接 tx.Commit() end := time.Now() fmt.Println("insert total time:",end.Sub(start).Seconds()) }
===========================
前天的切片今天去重新看了一遍并练习已理解
slice := []int{10, 20, 30, 40, 50} newSlice := slice[2:3]//截取的是30,下标从零开始数,数到2然后不能大于3 fmt.Printf("========%d+++++%d\n",slice,newSlice) //输出结果为:========[10 20 30 40 50]+++++[30] d:= []int{2} d=append(d, slice[len(slice)-1])//这样就是在d的后面追加slice长度-1的下标下的值50 fmt.Printf("********%d",d) //输出结果为:********[2 50] *d = (*a)[:len(*a)-1] 这个就是在a切片截取它的长度减一的值。