2024年6月1日
【leetcode】2928. 給小朋友們分糖果 I
題意:
給你兩個正整數
n
和limit
。請你將
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
個伺服器,伺服器從0
到n - 1
編號。同時給你一個陣列edges
,其中edges[i] = [ai, bi, weighti]
表示節點ai
和bi
之間有一條雙向邊,邊的權值為weighti
。再給你一個整數signalSpeed
。如果兩個伺服器
a
,b
和c
滿足以下條件,那麼我們稱伺服器a
和b
是透過伺服器c
可連線的 :
a < b
,a != c
且b != c
。- 從
c
到a
的距離是可以被signalSpeed
整除的。- 從
c
到b
的距離是可以被signalSpeed
整除的。- 從
c
到b
的路徑與從c
到a
的路徑沒有任何公共邊。請你返回一個長度為
n
的整數陣列count
,其中count[i]
表示透過伺服器i
可連線 的伺服器對的 數目 。
2024年6月5日
【leetcode】169. 多數元素
題意:
給定一個大小為
n
的陣列nums
,返回其中的多數元素。多數元素是指在陣列中出現次數 大於⌊ n/2 ⌋
的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
2024年6月6日
【leetcode】2938. 區分黑球與白球
題意:
桌子上有
n
個球,每個球的顏色不是黑色,就是白色。給你一個長度為
n
、下標從 0 開始的二進位制字串s
,其中1
和0
分別代表黑色和白色的球。在每一步中,你可以選擇兩個相鄰的球並交換它們。
返回「將所有黑色球都移到右側,所有白色球都移到左側所需的 最小步數」。
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
個氣球,編號為0
到n - 1
,每個氣球上都標有一個數字,這些數字存在陣列nums
中。現在要求你戳破所有的氣球。戳破第
i
個氣球,你可以獲得nums[i - 1] * nums[i] * nums[i + 1]
枚硬幣。 這裡的i - 1
和i + 1
代表和i
相鄰的兩個氣球的序號。如果i - 1
或i + 1
超出了陣列的邊界,那麼就當它是一個數字為1
的氣球。求所能獲得硬幣的最大數量。
2024年6月10日
【leetcode】881. 救生艇
題意:
給定陣列
people
。people[i]
表示第i
個人的體重 ,船的數量不限,每艘船可以承載的最大重量為limit
。每艘船最多可同時載兩人,但條件是這些人的重量之和最多為
limit
。返回 承載所有人所需的最小船數 。
2024年6月11日
【leetcode】419. 甲板上的戰艦
題意:
給你一個大小為
m x n
的矩陣board
表示甲板,其中,每個單元格可以是一艘戰艦'X'
或者是一個空位'.'
,返回在甲板board
上放置的 戰艦 的數量。戰艦 只能水平或者垂直放置在
board
上。換句話說,戰艦隻能按1 x k
(1
行,k
列)或k x 1
(k
行,1
列)的形狀建造,其中k
可以是任意大小。兩艘戰艦之間至少有一個水平或垂直的空位分隔 (即沒有相鄰的戰艦)。
2024年6月12日
【leetcode】2806. 取整購買後的賬戶餘額
題意:
一開始,你的銀行賬戶裡有
100
塊錢。給你一個整數
purchaseAmount
,它表示你在一次購買中願意支出的金額。在一個商店裡,你進行一次購買,實際支出的金額會向 最近 的
10
的 倍數 取整。換句話說,你實際會支付一個 非負 金額roundedAmount
,滿足roundedAmount
是10
的倍數且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
移動到位置j
且nums[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. 最長特殊序列 Ⅰ
題意:
給你兩個字串
a
和b
,請返回 這兩個字串中 最長的特殊序列 的長度。如果不存在,則返回-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
。如果下標對i
、j
滿足0 ≤ i < j < nums.length
,如果nums[i]
的 第一個數字 和nums[j]
的 最後一個數字 互質 ,則認為nums[i]
和nums[j]
是一組 美麗下標對 。返回
nums
中 美麗下標對 的總數目。對於兩個整數
x
和y
,如果不存在大於 1 的整數可以整除它們,則認為x
和y
互質 。換而言之,如果gcd(x, y) == 1
,則認為x
和y
互質,其中gcd(x, y)
是x
和y
的 最大公因數 。
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
題意:
給定一個迴圈陣列
nums
(nums[nums.length - 1]
的下一個元素是nums[0]
),返回nums
中每個元素的 下一個更大元素 。數字
x
的 下一個更大的元素 是按陣列遍歷順序,這個數字之後的第一個比它更大的數,這意味著你應該迴圈地搜尋它的下一個更大的數。如果不存在,則輸出-1
。
2024年6月25日
【leetcode】383. 贖金信
題意:
給你兩個字串:
ransomNote
和magazine
,判斷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 開始的整數陣列cost
和time
,分別表示給n
堵不同的牆刷油漆需要的開銷和時間。你有兩名油漆匠:
- 一位需要 付費 的油漆匠,刷第
i
堵牆需要花費time[i]
單位的時間,開銷為cost[i]
單位的錢。- 一位 免費 的油漆匠,刷 任意 一堵牆的時間為
1
單位,開銷為0
。但是必須在付費油漆匠 工作 時,免費油漆匠才會工作。請你返回刷完
n
堵牆最少開銷為多少。
2024年6月29日
【leetcode】2710. 移除字串中的尾隨零
題意:
給你一個用字串表示的正整數
num
,請你以字串形式返回不含尾隨零的整數num
。