2024年6月刷題記錄

jiamian22發表於2024-08-01

2024年6月1日

【leetcode】2928. 給小朋友們分糖果 I

題意:

給你兩個正整數 nlimit

請你將 n 顆糖果分給 3 位小朋友,確保沒有任何小朋友得到超過 limit 顆糖果,請你返回滿足此條件下的 總方案數




2024年6月2日

【leetcode】575. 分糖果

題意:

Alice 有 n 枚糖,其中第 i 枚糖的型別為 candyType[i] 。Alice 注意到她的體重正在增長,所以前去拜訪了一位醫生。

醫生建議 Alice 要少攝入糖分,只吃掉她所有糖的 n / 2 即可(n 是一個偶數)。Alice 非常喜歡這些糖,她想要在遵循醫生建議的情況下,儘可能吃到最多不同種類的糖。

給你一個長度為 n 的整數陣列 candyType ,返回: Alice 在僅吃掉 n / 2 枚糖的情況下,可以吃到糖的 最多 種類數




2024年6月3日

【leetcode】1103. 分糖果 II

題意:

排排坐,分糖果。

我們買了一些糖果 candies,打算把它們分給排好隊的 n = num_people 個小朋友。

給第一個小朋友 1 顆糖果,第二個小朋友 2 顆,依此類推,直到給最後一個小朋友 n 顆糖果。

然後,我們再回到隊伍的起點,給第一個小朋友 n + 1 顆糖果,第二個小朋友 n + 2 顆,依此類推,直到給最後一個小朋友 2 * n 顆糖果。

重複上述過程(每次都比上一次多給出一顆糖果,當到達隊伍終點後再次從隊伍起點開始),直到我們分完所有的糖果。注意,就算我們手中的剩下糖果數不夠(不比前一次發出的糖果多),這些糖果也會全部發給當前的小朋友。

返回一個長度為 num_people、元素之和為 candies 的陣列,以表示糖果的最終分發情況(即 ans[i] 表示第 i 個小朋友分到的糖果數)。




2024年6月4日

【leetcode】3067. 在帶權樹網路中統計可連線伺服器對數目

題意:

給你一棵無根帶權樹,樹中總共有 n 個節點,分別表示 n 個伺服器,伺服器從 0n - 1 編號。同時給你一個陣列 edges ,其中 edges[i] = [ai, bi, weighti] 表示節點 aibi 之間有一條雙向邊,邊的權值為 weighti 。再給你一個整數 signalSpeed

如果兩個伺服器 abc 滿足以下條件,那麼我們稱伺服器 ab 是透過伺服器 c 可連線的

  • a < ba != cb != c
  • ca 的距離是可以被 signalSpeed 整除的。
  • cb 的距離是可以被 signalSpeed 整除的。
  • cb 的路徑與從 ca 的路徑沒有任何公共邊。

請你返回一個長度為 n 的整數陣列 count ,其中 count[i] 表示透過伺服器 i 可連線 的伺服器對的 數目




2024年6月5日

【leetcode】169. 多數元素

題意:

給定一個大小為 n 的陣列 nums ,返回其中的多數元素。多數元素是指在陣列中出現次數 大於 ⌊ n/2 ⌋ 的元素。

你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。




2024年6月6日

【leetcode】2938. 區分黑球與白球

題意:

桌子上有 n 個球,每個球的顏色不是黑色,就是白色。

給你一個長度為 n 、下標從 0 開始的二進位制字串 s,其中 10 分別代表黑色和白色的球。

在每一步中,你可以選擇兩個相鄰的球並交換它們。

返回「將所有黑色球都移到右側,所有白色球都移到左側所需的 最小步數」。




2024年6月7日

【leetcode】3038. 相同分數的最大運算元目 I

題意:

給你一個整數陣列 nums ,如果 nums 至少 包含 2 個元素,你可以執行以下操作:

  • 選擇 nums 中的前兩個元素並將它們刪除。

一次操作的 分數 是被刪除元素的和。

在確保 所有操作分數相同 的前提下,請你求出 最多 能進行多少次操作。

請你返回按照上述要求 最多 可以進行的操作次數。




2024年6月8日

【leetcode】3040. 相同分數的最大運算元目 II

題意:

給你一個整數陣列 nums ,如果 nums 至少 包含 2 個元素,你可以執行以下操作中的 任意 一個:

  • 選擇 nums 中最前面兩個元素並且刪除它們。
  • 選擇 nums 中最後兩個元素並且刪除它們。
  • 選擇 nums 中第一個和最後一個元素並且刪除它們。

一次操作的 分數 是被刪除元素的和。

在確保 所有操作分數相同 的前提下,請你求出 最多 能進行多少次操作。

請你返回按照上述要求 最多 可以進行的操作次數。




2024年6月9日

【leetcode】312. 戳氣球

題意:

n 個氣球,編號為0n - 1,每個氣球上都標有一個數字,這些數字存在陣列 nums 中。

現在要求你戳破所有的氣球。戳破第 i 個氣球,你可以獲得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬幣。 這裡的 i - 1i + 1 代表和 i 相鄰的兩個氣球的序號。如果 i - 1i + 1 超出了陣列的邊界,那麼就當它是一個數字為 1 的氣球。

求所能獲得硬幣的最大數量。




2024年6月10日

【leetcode】881. 救生艇

題意:

給定陣列 peoplepeople[i]表示第 i 個人的體重 ,船的數量不限,每艘船可以承載的最大重量為 limit

每艘船最多可同時載兩人,但條件是這些人的重量之和最多為 limit

返回 承載所有人所需的最小船數




2024年6月11日

【leetcode】419. 甲板上的戰艦

題意:

給你一個大小為 m x n 的矩陣 board 表示甲板,其中,每個單元格可以是一艘戰艦 'X' 或者是一個空位 '.' ,返回在甲板 board 上放置的 戰艦 的數量。

戰艦 只能水平或者垂直放置在 board 上。換句話說,戰艦隻能按 1 x k1 行,k 列)或 k x 1k 行,1 列)的形狀建造,其中 k 可以是任意大小。兩艘戰艦之間至少有一個水平或垂直的空位分隔 (即沒有相鄰的戰艦)。




2024年6月12日

【leetcode】2806. 取整購買後的賬戶餘額

題意:

一開始,你的銀行賬戶裡有 100 塊錢。

給你一個整數purchaseAmount ,它表示你在一次購買中願意支出的金額。

在一個商店裡,你進行一次購買,實際支出的金額會向 最近10倍數 取整。換句話說,你實際會支付一個 非負 金額 roundedAmount ,滿足 roundedAmount10 的倍數且 abs(roundedAmount - purchaseAmount) 的值 最小

如果存在多於一個最接近的 10 的倍數,較大的倍數 是你的實際支出金額。

請你返回一個整數,表示你在願意支出金額為 purchaseAmount 塊錢的前提下,購買之後剩下的餘額。

注意: 0 也是 10 的倍數。




2024年6月13日

【leetcode】189. 輪轉陣列

題意:

給定一個整數陣列 nums,將陣列中的元素向右輪轉 k 個位置,其中 k 是非負數。




2024年6月14日

【leetcode】2786. 訪問陣列中的位置使分數最大

題意:

給你一個下標從 0 開始的整數陣列 nums 和一個正整數 x

一開始 在陣列的位置 0 處,你可以按照下述規則訪問陣列中的其他位置:

  • 如果你當前在位置 i ,那麼你可以移動到滿足 i < j任意 位置 j
  • 對於你訪問的位置 i ,你可以獲得分數 nums[i]
  • 如果你從位置 i 移動到位置 jnums[i]nums[j]奇偶性 不同,那麼你將失去分數 x

請你返回你能得到的 最大 得分之和。

注意 ,你一開始的分數為 nums[0]




2024年6月15日

【leetcode】2779. 陣列的最大美麗值

題意:

給你一個下標從 0 開始的整數陣列 nums 和一個 非負 整數 k

在一步操作中,你可以執行下述指令:

  • 在範圍 [0, nums.length - 1] 中選擇一個 此前沒有選過 的下標 i
  • nums[i] 替換為範圍 [nums[i] - k, nums[i] + k] 內的任一整數。

陣列的 美麗值 定義為陣列中由相等元素組成的最長子序列的長度。

對陣列 nums 執行上述操作任意次後,返回陣列可能取得的 最大 美麗值。

注意: 能對每個下標執行 一次 此操作。

陣列的 子序列 定義是:經由原陣列刪除一些元素(也可能不刪除)得到的一個新陣列,且在此過程中剩餘元素的順序不發生改變。




2024年6月16日

【leetcode】521. 最長特殊序列 Ⅰ

題意:

給你兩個字串 ab,請返回 這兩個字串中 最長的特殊序列 的長度。如果不存在,則返回 -1

「最長特殊序列」 定義如下:該序列為 某字串獨有的最長子序列(即不能是其他字串的子序列)

字串 s 的子序列是在從 s 中刪除任意數量的字元後可以獲得的字串。

  • 例如,"abc""aebdc" 的子序列,因為刪除 "a***e***b***d\***c" 中斜體加粗的字元可以得到 "abc""aebdc" 的子序列還包括 "aebdc""aeb""" (空字串)。



2024年6月17日

【leetcode】522. 最長特殊序列 II

題意:

給定字串列表 strs ,返回其中 最長的特殊序列 的長度。如果最長特殊序列不存在,返回 -1

特殊序列 定義如下:該序列為某字串 獨有的子序列(即不能是其他字串的子序列)

s子序列可以透過刪去字串 s 中的某些字元實現。

  • 例如,"abc""aebdc" 的子序列,因為您可以刪除"aebdc"中的下劃線字元來得到 "abc""aebdc"的子序列還包括"aebdc""aeb" 和 "" (空字串)。



2024年6月18日

【leetcode】2288. 價格減免

題意:

句子 是由若干個單片語成的字串,單詞之間用單個空格分隔,其中每個單詞可以包含數字、小寫字母、和美元符號 '$' 。如果單詞的形式為美元符號後跟著一個非負實數,那麼這個單詞就表示一個 價格

  • 例如 "$100""$23""$6" 表示價格,而 "100""$""$1e5 不是。

給你一個字串 sentence 表示一個句子和一個整數 discount 。對於每個表示價格的單詞,都在價格的基礎上減免 discount% ,並 更新 該單詞到句子中。所有更新後的價格應該表示為一個 恰好保留小數點後兩位 的數字。

返回表示修改後句子的字串。

注意:所有價格 最多10 位數字。




2024年6月19日

【leetcode】121. 買賣股票的最佳時機

題意:

給定一個陣列 prices ,它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。

你只能選擇 某一天 買入這隻股票,並選擇在 未來的某一個不同的日子 賣出該股票。設計一個演算法來計算你所能獲取的最大利潤。

返回你可以從這筆交易中獲取的最大利潤。如果你不能獲取任何利潤,返回 0




2024年6月20日

【leetcode】2748. 美麗下標對的數目

題意:

給你一個下標從 0 開始的整數陣列 nums 。如果下標對 ij 滿足 0 ≤ i < j < nums.length ,如果 nums[i]第一個數字nums[j]最後一個數字 互質 ,則認為 nums[i]nums[j] 是一組 美麗下標對

返回 nums美麗下標對 的總數目。

對於兩個整數 xy ,如果不存在大於 1 的整數可以整除它們,則認為 xy 互質 。換而言之,如果 gcd(x, y) == 1 ,則認為 xy 互質,其中 gcd(x, y)xy最大公因數




2024年6月21日

【leetcode】LCP 61. 氣溫變化趨勢

題意:

力扣城計劃在兩地設立「力扣嘉年華」的分會場,氣象小組正在分析兩地區的氣溫變化趨勢,對於第 i ~ (i+1) 天的氣溫變化趨勢,將根據以下規則判斷:

  • 若第 i+1 天的氣溫 高於i 天,為 上升 趨勢
  • 若第 i+1 天的氣溫 等於i 天,為 平穩 趨勢
  • 若第 i+1 天的氣溫 低於i 天,為 下降 趨勢

已知 temperatureA[i]temperatureB[i] 分別表示第 i 天兩地區的氣溫。 組委會希望找到一段天數儘可能多,且兩地氣溫變化趨勢相同的時間舉辦嘉年華活動。請分析並返回兩地氣溫變化趨勢相同的最大連續天數

即最大的 n,使得第 i~i+n 天之間,兩地氣溫變化趨勢相同




2024年6月22日

【leetcode】125. 驗證迴文串

題意:

如果在將所有大寫字元轉換為小寫字元、並移除所有非字母數字字元之後,短語正著讀和反著讀都一樣。則可以認為該短語是一個 迴文串

字母和數字都屬於字母數字字元。

給你一個字串 s,如果它是 迴文串 ,返回 true ;否則,返回 false




2024年6月23日

【leetcode】520. 檢測大寫字母

題意:

我們定義,在以下情況時,單詞的大寫用法是正確的:

  • 全部字母都是大寫,比如 "USA"
  • 單詞中所有字母都不是大寫,比如 "leetcode"
  • 如果單詞不只含有一個字母,只有首字母大寫, 比如 "Google"

給你一個字串 word 。如果大寫用法正確,返回 true ;否則,返回 false




2024年6月24日

【leetcode】503. 下一個更大元素 II

題意:

給定一個迴圈陣列 numsnums[nums.length - 1] 的下一個元素是 nums[0] ),返回 nums 中每個元素的 下一個更大元素

數字 x下一個更大的元素 是按陣列遍歷順序,這個數字之後的第一個比它更大的數,這意味著你應該迴圈地搜尋它的下一個更大的數。如果不存在,則輸出 -1




2024年6月25日

【leetcode】383. 贖金信

題意:

給你兩個字串:ransomNotemagazine ,判斷 ransomNote 能不能由 magazine 裡面的字元構成。

如果可以,返回 true ;否則返回 false

magazine 中的每個字元只能在 ransomNote 中使用一次。




2024年6月26日

【leetcode】9. 迴文數

題意:

給你一個整數 x ,如果 x 是一個迴文整數,返回 true ;否則,返回 false

迴文數 是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

  • 例如,121 是迴文,而 123 不是。



2024年6月27日

【leetcode】2734. 執行子串操作後的字典序最小字串

題意:

給你一個僅由小寫英文字母組成的字串 s 。在一步操作中,你可以完成以下行為:

  • 選擇 s 的任一非空子字串,可能是整個字串,接著將字串中的每一個字元替換為英文字母表中的前一個字元。例如,'b' 用 'a' 替換,'a' 用 'z' 替換。

返回執行上述操作 恰好一次 後可以獲得的 字典序最小 的字串。

子字串 是字串中的一個連續字元序列。

現有長度相同的兩個字串 x 和 字串 y ,在滿足 x[i] != y[i] 的第一個位置 i 上,如果 x[i] 在字母表中先於 y[i] 出現,則認為字串 x 比字串 y 字典序更小




2024年6月28日

【leetcode】2742. 給牆壁刷油漆

題意:

給你兩個長度為 n 下標從 0 開始的整數陣列 costtime ,分別表示給 n 堵不同的牆刷油漆需要的開銷和時間。你有兩名油漆匠:

  • 一位需要 付費 的油漆匠,刷第 i 堵牆需要花費 time[i] 單位的時間,開銷為 cost[i] 單位的錢。
  • 一位 免費 的油漆匠,刷 任意 一堵牆的時間為 1 單位,開銷為 0 。但是必須在付費油漆匠 工作 時,免費油漆匠才會工作。

請你返回刷完 n 堵牆最少開銷為多少。




2024年6月29日

【leetcode】2710. 移除字串中的尾隨零

題意:

給你一個用字串表示的正整數 num ,請你以字串形式返回不含尾隨零的整數 num