897. 遞增順序搜索樹-簡單
題目描述:
給你一棵二叉搜索樹的 root ,請你 按中序遍歷 將其重新排列為一棵遞增順序搜索樹,使樹中最左邊的節(jié)點成為樹的根節(jié)點,并且每個節(jié)點沒有左子節(jié)點,只有一個右子節(jié)點。
題解:
中序遍歷存儲節(jié)點后按順序連接即可
代碼(Go):文章來源:http://www.zghlxwxcb.cn/news/detail-476071.html
func increasingBST(root *TreeNode) *TreeNode {
sce := []int{}
var front func(*TreeNode)
front = func(node *TreeNode) {
if node != nil {
front(node.Left)
sce = append(sce, node.Val)
front(node.Right)
}
}
front(root)
reNode := &TreeNode{}
p := reNode
for _, val := range sce {
p.Right = &TreeNode{Val: val}
p = p.Right
}
return reNode.Right
}
LCP 17. 速算機器人-簡單
題目描述:
小扣在秋日市集發(fā)現(xiàn)了一款速算機器人。店家對機器人說出兩個數(shù)字(記作 x 和 y),請小扣說出計算指令:
“A” 運算:使 x = 2 * x + y;
“B” 運算:使 y = 2 * y + x。
在本次游戲中,店家說出的數(shù)字為 x = 1 和 y = 0,小扣說出的計算指令記作僅由大寫字母 A、B 組成的字符串 s,字符串中字符的順序表示計算順序,請返回最終 x 與 y 的和為多少。
題解:
直接模擬
代碼(Go):
func calculate(s string) int {
x := 1
y := 0
for _,v := range s{
if v == rune('A'){
x = 2 * x + y
}else{
y = 2 * y + x
}
}
return x + y
}
LCS 01. 下載插件-簡單
題目描述:
小扣打算給自己的 VS code 安裝使用插件,初始狀態(tài)下帶寬每分鐘可以完成 1 個插件的下載。假定每分鐘選擇以下兩種策略之一:
使用當前帶寬下載插件
將帶寬加倍(下載插件數(shù)量隨之加倍)
請返回小扣完成下載 n 個插件最少需要多少分鐘。
注意:實際的下載的插件數(shù)量可以超過 n 個
題解:
這個題比較容易想到,加速一定是最優(yōu)的,最差的情況加速也只是和不加速用時相等,所以只需要一直加速直到可以一次下載完返回sum+1即可
代碼(Go):
func leastMinutes(n int) int {
num := 1
sum := 0
for num < n{
num = num * 2
sum++
}
return sum + 1
}
105. 從前序與中序遍歷序列構(gòu)造二叉樹-中等
題目描述:
給定兩個整數(shù)數(shù)組 preorder 和 inorder ,其中 preorder 是二叉樹的先序遍歷, inorder 是同一棵樹的中序遍歷,請構(gòu)造二叉樹并返回其根節(jié)點。
題解:
遞歸,在中序數(shù)組中找到根節(jié)點后將數(shù)組分為兩部分,并以此為根據(jù)再把前序數(shù)組劃分為兩部分,分別調(diào)用遞歸函數(shù)
代碼(Go):
func buildTree(preorder []int, inorder []int) *TreeNode {
if len(preorder) == 0 {
return nil
}
root := &TreeNode{preorder[0], nil, nil}
i := 0
for i < len(inorder){
if inorder[i] == preorder[0] {
break
}
i++
}
root.Left = buildTree(preorder[1:len(inorder[:i])+1], inorder[:i])
root.Right = buildTree(preorder[len(inorder[:i])+1:], inorder[i+1:])
return root
}
總結(jié)
今天嘗試了一下困難難度的每日一題,只能說還是有點自不量力了,時間浪費有點多,所以挑了道比較容易的中等題文章來源地址http://www.zghlxwxcb.cn/news/detail-476071.html
到了這里,關(guān)于從零開始的力扣刷題記錄-第五十一天的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!