2024年2月2日
【leetcode】1686. 石子游戲 VI
題意:
Alice 和 Bob 輪流玩一個遊戲,Alice 先手。
一堆石子裡總共有
n
個石子,輪到某個玩家時,他可以 移出 一個石子並得到這個石子的價值。Alice 和 Bob 對石子價值有 不一樣的的評判標準 。雙方都知道對方的評判標準。給你兩個長度為
n
的整數陣列aliceValues
和bobValues
。aliceValues[i]
和bobValues[i]
分別表示 Alice 和 Bob 認為第i
個石子的價值。所有石子都被取完後,得分較高的人為勝者。如果兩個玩家得分相同,那麼為平局。兩位玩家都會採用 最優策略 進行遊戲。
請你推斷遊戲的結果,用如下的方式表示:
- 如果 Alice 贏,返回
1
。- 如果 Bob 贏,返回
-1
。- 如果遊戲平局,返回
0
。
2024年2月3日
【leetcode】1690. 石子游戲 VII
題意:
石子游戲中,愛麗絲和鮑勃輪流進行自己的回合,愛麗絲先開始 。
有
n
塊石子排成一排。每個玩家的回合中,可以從行中 移除 最左邊的石頭或最右邊的石頭,並獲得與該行中剩餘石頭值之 和 相等的得分。當沒有石頭可移除時,得分較高者獲勝。鮑勃發現他總是輸掉遊戲(可憐的鮑勃,他總是輸),所以他決定盡力 減小得分的差值 。愛麗絲的目標是最大限度地 擴大得分的差值 。
給你一個整數陣列
stones
,其中stones[i]
表示 從左邊開始 的第i
個石頭的值,如果愛麗絲和鮑勃都 發揮出最佳水平 ,請返回他們 得分的差值 。
2024年2月4日
【leetcode】292. Nim 遊戲
題意:
你和你的朋友,兩個人一起玩 Nim 遊戲:
- 桌子上有一堆石頭。
- 你們輪流進行自己的回合, 你作為先手 。
- 每一回合,輪到的人拿掉 1 - 3 塊石頭。
- 拿掉最後一塊石頭的人就是獲勝者。
假設你們每一步都是最優解。請編寫一個函式,來判斷你是否可以在給定石頭數量為
n
的情況下贏得遊戲。如果可以贏,返回true
;否則,返回false
。
2024年2月5日
【leetcode】1696. 跳躍遊戲 VI
題意:
給你一個下標從 0 開始的整數陣列
nums
和一個整數k
。一開始你在下標
0
處。每一步,你最多可以往前跳k
步,但你不能跳出陣列的邊界。也就是說,你可以從下標i
跳到[i + 1, min(n - 1, i + k)]
包含 兩個端點的任意位置。你的目標是到達陣列最後一個位置(下標為
n - 1
),你的 得分 為經過的所有數字之和。請你返回你能得到的 最大得分 。
2024年2月6日
【leetcode】LCP 30. 魔塔遊戲
題意:
小扣當前位於魔塔遊戲第一層,共有
N
個房間,編號為0 ~ N-1
。每個房間的補血道具/怪物對於血量影響記於陣列nums
,其中正數表示道具補血數值,即血量增加對應數值;負數表示怪物造成傷害值,即血量減少對應數值;0
表示房間對血量無影響。小扣初始血量為 1,且無上限。假定小扣原計劃按房間編號升序訪問所有房間補血/打怪,為保證血量始終為正值,小扣需對房間訪問順序進行調整,每次僅能將一個怪物房間(負數的房間)調整至訪問順序末尾。請返回小扣最少需要調整幾次,才能順利訪問所有房間。若調整順序也無法訪問完全部房間,請返回 -1。
2024年2月7日
【leetcode】2641. 二叉樹的堂兄弟節點 II
題意:
給你一棵二叉樹的根
root
,請你將每個節點的值替換成該節點的所有 堂兄弟節點值的和 。如果兩個節點在樹中有相同的深度且它們的父節點不同,那麼它們互為 堂兄弟 。
請你返回修改值之後,樹的根
root
。注意,一個節點的深度指的是從樹根節點到這個節點經過的邊數。
2024年2月8日
【leetcode】993. 二叉樹的堂兄弟節點
題意:
在二叉樹中,根節點位於深度
0
處,每個深度為k
的節點的子節點位於深度k+1
處。如果二叉樹的兩個節點深度相同,但 父節點不同 ,則它們是一對堂兄弟節點。
我們給出了具有唯一值的二叉樹的根節點
root
,以及樹中兩個不同節點的值x
和y
。只有與值
x
和y
對應的節點是堂兄弟節點時,才返回true
。否則,返回false
。
2024年2月9日
【leetcode】236. 二叉樹的最近公共祖先
題意:
給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。
2024年2月10日
【leetcode】94. 二叉樹的中序遍歷
題意:
給定一個二叉樹的根節點
root
,返回 它的 中序 遍歷 。
2024年2月11日
【leetcode】144. 二叉樹的前序遍歷
題意:
給你二叉樹的根節點
root
,返回它節點值的 前序 遍歷。
2024年2月12日
【leetcode】145. 二叉樹的後序遍歷
題意:
給你一棵二叉樹的根節點
root
,返回其節點值的 後序遍歷 。
2024年2月13日
【leetcode】987. 二叉樹的垂序遍歷
題意:
給你二叉樹的根結點
root
,請你設計演算法計算二叉樹的 垂序遍歷 序列。對位於
(row, col)
的每個結點而言,其左右子結點分別位於(row + 1, col - 1)
和(row + 1, col + 1)
。樹的根結點位於(0, 0)
。二叉樹的 垂序遍歷 從最左邊的列開始直到最右邊的列結束,按列索引每一列上的所有結點,形成一個按出現位置從上到下排序的有序列表。如果同行同列上有多個結點,則按結點的值從小到大進行排序。
返回二叉樹的 垂序遍歷 序列。
2024年2月14日
【leetcode】102. 二叉樹的層序遍歷
題意:
給你二叉樹的根節點
root
,返回其節點值的 層序遍歷 。 (即逐層地,從左到右訪問所有節點)。
2024年2月15日
【leetcode】107. 二叉樹的層序遍歷 II
題意:
給你二叉樹的根節點
root
,返回其節點值 自底向上的層序遍歷 。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
2024年2月16日
【leetcode】103. 二叉樹的鋸齒形層序遍歷
題意:
給你二叉樹的根節點
root
,返回其節點值的 鋸齒形層序遍歷 。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。
2024年2月17日
【leetcode】429. N 叉樹的層序遍歷
題意:
給定一個 N 叉樹,返回其節點值的層序遍歷。(即從左到右,逐層遍歷)。
樹的序列化輸入是用層序遍歷,每組子節點都由 null 值分隔(參見示例)。
2024年2月18日
【leetcode】589. N 叉樹的前序遍歷
題意:
給定一個 n 叉樹的根節點
root
,返回 其節點值的 前序遍歷 。n 叉樹 在輸入中按層序遍歷進行序列化表示,每組子節點由空值
null
分隔(請參見示例)。
2024年2月19日
【leetcode】590. N 叉樹的後序遍歷
題意:
給定一個 n 叉樹的根節點
root
,返回 其節點值的 後序遍歷 。n 叉樹 在輸入中按層序遍歷進行序列化表示,每組子節點由空值
null
分隔(請參見示例)。
2024年2月20日
【leetcode】105. 從前序與中序遍歷序列構造二叉樹
題意:
給定兩個整數陣列
preorder
和inorder
,其中preorder
是二叉樹的先序遍歷,inorder
是同一棵樹的中序遍歷,請構造二叉樹並返回其根節點。
2024年2月21日
【leetcode】106. 從中序與後序遍歷序列構造二叉樹
題意:
給定兩個整數陣列
inorder
和postorder
,其中inorder
是二叉樹的中序遍歷,postorder
是同一棵樹的後序遍歷,請你構造並返回這顆 二叉樹 。
2024年2月22日
【leetcode】889. 根據前序和後序遍歷構造二叉樹
題意:
給定兩個整數陣列,
preorder
和postorder
,其中preorder
是一個具有 無重複 值的二叉樹的前序遍歷,postorder
是同一棵樹的後序遍歷,重構並返回二叉樹。如果存在多個答案,您可以返回其中 任何 一個。
2024年2月23日
【leetcode】2583. 二叉樹中的第 K 大層和
題意:
給你一棵二叉樹的根節點
root
和一個正整數k
。樹中的 層和 是指 同一層 上節點值的總和。
返回樹中第
k
大的層和(不一定不同)。如果樹少於k
層,則返回-1
。注意,如果兩個節點與根節點的距離相同,則認為它們在同一層。
2024年2月24日
【leetcode】2476. 二叉搜尋樹最近節點查詢
題意:
給你一個 二叉搜尋樹 的根節點
root
,和一個由正整陣列成、長度為n
的陣列queries
。請你找出一個長度為
n
的 二維 答案陣列answer
,其中answer[i] = [mini, maxi]
:
mini
是樹中小於等於queries[i]
的 最大值 。如果不存在這樣的值,則使用-1
代替。maxi
是樹中大於等於queries[i]
的 最小值 。如果不存在這樣的值,則使用-1
代替。返回陣列
answer
。
2024年2月25日
【leetcode】235. 二叉搜尋樹的最近公共祖先
題意:
給定一個二叉搜尋樹, 找到該樹中兩個指定節點的最近公共祖先。
2024年2月26日
【leetcode】938. 二叉搜尋樹的範圍和
題意:
給定二叉搜尋樹的根結點
root
,返回值位於範圍[low, high]
之間的所有結點的值的和。
2024年2月28日
【leetcode】2673. 使二叉樹所有路徑值相等的最小代價
題意:
給你一個整數
n
表示一棵 滿二叉樹 裡面節點的數目,節點編號從1
到n
。根節點編號為1
,樹中每個非葉子節點i
都有兩個孩子,分別是左孩子2 * i
和右孩子2 * i + 1
。樹中每個節點都有一個值,用下標從 0 開始、長度為
n
的整數陣列cost
表示,其中cost[i]
是第i + 1
個節點的值。每次操作,你可以將樹中 任意 節點的值 增加1
。你可以執行操作 任意 次。你的目標是讓根到每一個 葉子結點 的路徑值相等。請你返回 最少 需要執行增加操作多少次。
注意:
- 滿二叉樹 指的是一棵樹,它滿足樹中除了葉子節點外每個節點都恰好有 2 個子節點,且所有葉子節點距離根節點距離相同。
- 路徑值 指的是路徑上所有節點的值之和。