2024年2月刷題記錄

jiamian22發表於2024-08-01

2024年2月2日

【leetcode】1686. 石子游戲 VI

題意:

Alice 和 Bob 輪流玩一個遊戲,Alice 先手。

一堆石子裡總共有 n 個石子,輪到某個玩家時,他可以 移出 一個石子並得到這個石子的價值。Alice 和 Bob 對石子價值有 不一樣的的評判標準 。雙方都知道對方的評判標準。

給你兩個長度為 n 的整數陣列 aliceValuesbobValuesaliceValues[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 ,以及樹中兩個不同節點的值 xy

只有與值 xy 對應的節點是堂兄弟節點時,才返回 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. 從前序與中序遍歷序列構造二叉樹

題意:

給定兩個整數陣列 preorderinorder ,其中 preorder 是二叉樹的先序遍歷inorder 是同一棵樹的中序遍歷,請構造二叉樹並返回其根節點。




2024年2月21日

【leetcode】106. 從中序與後序遍歷序列構造二叉樹

題意:

給定兩個整數陣列 inorderpostorder ,其中 inorder 是二叉樹的中序遍歷, postorder 是同一棵樹的後序遍歷,請你構造並返回這顆 二叉樹




2024年2月22日

【leetcode】889. 根據前序和後序遍歷構造二叉樹

題意:

給定兩個整數陣列,preorderpostorder ,其中 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 表示一棵 滿二叉樹 裡面節點的數目,節點編號從 1n 。根節點編號為 1 ,樹中每個非葉子節點 i 都有兩個孩子,分別是左孩子 2 * i 和右孩子 2 * i + 1

樹中每個節點都有一個值,用下標從 0 開始、長度為 n 的整數陣列 cost 表示,其中 cost[i] 是第 i + 1 個節點的值。每次操作,你可以將樹中 任意 節點的值 增加 1 。你可以執行操作 任意 次。

你的目標是讓根到每一個 葉子結點 的路徑值相等。請你返回 最少 需要執行增加操作多少次。

注意:

  • 滿二叉樹 指的是一棵樹,它滿足樹中除了葉子節點外每個節點都恰好有 2 個子節點,且所有葉子節點距離根節點距離相同。
  • 路徑值 指的是路徑上所有節點的值之和。