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切片截取它的长度减一的值。
本文介绍了一个用于判断二叉树是否平衡的算法实现,并详细展示了如何使用 Go 语言进行数据库连接及批量插入操作,包括错误处理及性能优化技巧。
1096

被折叠的 条评论
为什么被折叠?



