2024年1月1日
【leetcode】1599. 經營摩天輪的最大利潤
題意:
你正在經營一座摩天輪,該摩天輪共有 4 個座艙 ,每個座艙 最多可以容納 4 位遊客 。你可以 逆時針 輪轉座艙,但每次輪轉都需要支付一定的執行成本
runningCost
。摩天輪每次輪轉都恰好轉動 1 / 4 周。給你一個長度為
n
的陣列customers
,customers[i]
是在第i
次輪轉(下標從 0 開始)之前到達的新遊客的數量。這也意味著你必須在新遊客到來前輪轉i
次。每位遊客在登上離地面最近的座艙前都會支付登艙成本boardingCost
,一旦該座艙再次抵達地面,他們就會離開座艙結束遊玩。你可以隨時停下摩天輪,即便是 在服務所有遊客之前 。如果你決定停止運營摩天輪,為了保證所有遊客安全著陸,將免費進行所有後續輪轉。注意,如果有超過 4 位遊客在等摩天輪,那麼只有 4 位遊客可以登上摩天輪,其餘的需要等待 下一次輪轉 。
返回最大化利潤所需執行的 最小輪轉次數 。 如果不存在利潤為正的方案,則返回
-1
。
2024年1月2日
【leetcode】466. 統計重複個數
題意:
定義
str = [s, n]
表示str
由n
個字串s
連線構成。
- 例如,
str == ["abc", 3] =="abcabcabc"
。如果可以從
s2
中刪除某些字元使其變為s1
,則稱字串s1
可以從字串s2
獲得。
- 例如,根據定義,
s1 = "abc"
可以從s2 = "ab*dbe*c"
獲得,僅需要刪除加粗且用斜體標識的字元。現在給你兩個字串
s1
和s2
和兩個整數n1
和n2
。由此構造得到兩個字串,其中str1 = [s1, n1]
、str2 = [s2, n2]
。請你找出一個最大整數
m
,以滿足str = [str2, m]
可以從str1
獲得。
2024年1月3日
【leetcode】2487. 從連結串列中移除節點
題意:
給你一個連結串列的頭節點
head
。移除每個右側有一個更大數值的節點。
返回修改後連結串列的頭節點
head
。
2024年1月4日
【leetcode】2397. 被列覆蓋的最多行數
題意:
給你一個下標從 0 開始、大小為
m x n
的二進位制矩陣matrix
;另給你一個整數numSelect
,表示你必須從matrix
中選擇的 不同 列的數量。如果一行中所有的
1
都被你選中的列所覆蓋,則認為這一行被 覆蓋 了。形式上,假設
s = {c1, c2, ...., cnumSelect}
是你選擇的列的集合。對於矩陣中的某一行row
,如果滿足下述條件,則認為這一行被集合s
覆蓋:
- 對於滿足
matrix[row][col] == 1
的每個單元格matrix[row][col]
(0 <= col <= n - 1
),col
均存在於s
中,或者row
中 不存在 值為1
的單元格。你需要從矩陣中選出
numSelect
個列,使集合覆蓋的行數最大化。返回一個整數,表示可以由
numSelect
列構成的集合 覆蓋 的 最大行數 。
2024年1月5日
【leetcode】1944. 佇列中可以看到的人數
題意:
有
n
個人排成一個佇列,從左到右 編號為0
到n - 1
。給你以一個整數陣列heights
,每個整數 互不相同,heights[i]
表示第i
個人的高度。一個人能 看到 他右邊另一個人的條件是這兩人之間的所有人都比他們兩人 矮 。更正式的,第
i
個人能看到第j
個人的條件是i < j
且min(heights[i], heights[j]) > max(heights[i+1], heights[i+2], ..., heights[j-1])
。請你返回一個長度為
n
的陣列answer
,其中answer[i]
是第i
個人在他右側佇列中能 看到 的 人數 。
2024年1月6日
【leetcode】2807. 在連結串列中插入最大公約數
題意:
給你一個連結串列的頭
head
,每個結點包含一個整數值。在相鄰結點之間,請你插入一個新的結點,結點值為這兩個相鄰結點值的 最大公約數 。
請你返回插入之後的連結串列。
兩個數的 最大公約數 是可以被兩個數字整除的最大正整數。
2024年1月7日
【leetcode】383. 贖金信
題意:
給你兩個字串:
ransomNote
和magazine
,判斷ransomNote
能不能由magazine
裡面的字元構成。如果可以,返回
true
;否則返回false
。
magazine
中的每個字元只能在ransomNote
中使用一次。
2024年1月8日
【leetcode】447. 迴旋鏢的數量
題意:
給定平面上
n
對 互不相同 的點points
,其中points[i] = [xi, yi]
。迴旋鏢 是由點(i, j, k)
表示的元組 ,其中i
和j
之間的距離和i
和k
之間的歐式距離相等(需要考慮元組的順序)。返回平面上所有迴旋鏢的數量。
2024年1月9日
【leetcode】2707. 字串中的額外字元
題意:
給你一個下標從 0 開始的字串
s
和一個單詞字典dictionary
。你需要將s
分割成若干個 互不重疊 的子字串,每個子字串都在dictionary
中出現過。s
中可能會有一些 額外的字元 不在任何子字串中。請你採取最優策略分割
s
,使剩下的字元 最少 。
2024年1月10日
【leetcode】2696. 刪除子串後的字串最小長度
題意:
給你一個僅由 大寫 英文字元組成的字串
s
。你可以對此字串執行一些操作,在每一步操作中,你可以從
s
中刪除 任一個"AB"
或"CD"
子字串。透過執行操作,刪除所有
"AB"
和"CD"
子串,返回可獲得的最終字串的 最小 可能長度。注意,刪除子串後,重新連線出的字串可能會產生新的
"AB"
或"CD"
子串。
2024年1月11日
【leetcode】2645. 構造有效字串的最少插入數
題意:
給你一個字串
word
,你可以向其中任何位置插入 "a"、"b" 或 "c" 任意次,返回使word
有效 需要插入的最少字母數。如果字串可以由 "abc" 串聯多次得到,則認為該字串 有效 。
2024年1月12日
【leetcode】2085. 統計出現過一次的公共字串
題意:
給你兩個字串陣列
words1
和words2
,請你返回在兩個字串陣列中 都恰好出現一次 的字串的數目。
2024年1月13日
【leetcode】2182. 構造限制重複的字串
題意:
給你一個字串
s
和一個整數repeatLimit
,用s
中的字元構造一個新字串repeatLimitedString
,使任何字母 連續 出現的次數都不超過repeatLimit
次。你不必使用s
中的全部字元。返回 字典序最大的
repeatLimitedString
。如果在字串
a
和b
不同的第一個位置,字串a
中的字母在字母表中出現時間比字串b
對應的字母晚,則認為字串a
比字串b
字典序更大 。如果字串中前min(a.length, b.length)
個字元都相同,那麼較長的字串字典序更大。
2024年1月14日
【leetcode】83. 刪除排序連結串列中的重複元素
題意:
給定一個已排序的連結串列的頭
head
, 刪除所有重複的元素,使每個元素只出現一次 。返回 已排序的連結串列 。
2024年1月15日
【leetcode】82. 刪除排序連結串列中的重複元素 II
題意:
給定一個已排序的連結串列的頭
head
, 刪除原始連結串列中所有重複數字的節點,只留下不同的數字 。返回 已排序的連結串列 。
【leetcode】203. 移除連結串列元素
題意:
給你一個連結串列的頭節點
head
和一個整數val
,請你刪除連結串列中所有滿足Node.val == val
的節點,並返回 新的頭節點 。
2024年1月16日
【leetcode】2719. 統計整數數目
題意:
給你兩個數字字串
num1
和num2
,以及兩個整數max_sum
和min_sum
。如果一個整數x
滿足以下條件,我們稱它是一個好整數:
num1 <= x <= num2
min_sum <= digit_sum(x) <= max_sum
.請你返回好整數的數目。答案可能很大,請返回答案對
109 + 7
取餘後的結果。注意,
digit_sum(x)
表示x
各位數字之和。
【leetcode】2376. 統計特殊整數
題意:
給你兩個數字字串
num1
和num2
,以及兩個整數max_sum
和min_sum
。如果一個整數x
滿足以下條件,我們稱它是一個好整數:
num1 <= x <= num2
min_sum <= digit_sum(x) <= max_sum
.請你返回好整數的數目。答案可能很大,請返回答案對
109 + 7
取餘後的結果。注意,
digit_sum(x)
表示x
各位數字之和。
【leetcode】1012. 至少有 1 位重複的數字
題意:
給定正整數
n
,返回在[1, n]
範圍內具有 至少 1 位 重複數字的正整數的個數。
【leetcode】902. 最大為 N 的數字組合
題意:
給你兩個數字字串
num1
和num2
,以及兩個整數max_sum
和min_sum
。如果一個整數x
滿足以下條件,我們稱它是一個好整數:
num1 <= x <= num2
min_sum <= digit_sum(x) <= max_sum
.請你返回好整數的數目。答案可能很大,請返回答案對
109 + 7
取餘後的結果。注意,
digit_sum(x)
表示x
各位數字之和。
【leetcode】2999. 統計強大整數的數目
題意:
給你三個整數
start
,finish
和limit
。同時給你一個下標從 0 開始的字串s
,表示一個 正 整數。如果一個 正 整數
x
末尾部分是s
(換句話說,s
是x
的 字尾),且x
中的每個數位至多是limit
,那麼我們稱x
是 強大的 。請你返回區間
[start..finish]
內強大整數的 總數目 。如果一個字串
x
是y
中某個下標開始(包括0
),到下標為y.length - 1
結束的子字串,那麼我們稱x
是y
的一個字尾。比方說,25
是5125
的一個字尾,但不是512
的字尾。
2024年1月17日
【leetcode】2744. 最大字串配對數目
題意:
給你一個下標從 0 開始的陣列
words
,陣列中包含 互不相同 的字串。如果字串
words[i]
與字串words[j]
滿足以下條件,我們稱它們可以匹配:
- 字串
words[i]
等於words[j]
的反轉字串。0 <= i < j < words.length
請你返回陣列
words
中的 最大 匹配數目。注意,每個字串最多匹配一次。
2024年1月18日
【leetcode】233. 數字 1 的個數
題意:
給定一個整數
n
,計算所有小於等於n
的非負整數中數字1
出現的個數。
【leetcode】2171. 拿出最少數目的魔法豆
題意:
給定一個 正整數 陣列
beans
,其中每個整數表示一個袋子裡裝的魔法豆的數目。請你從每個袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少還有一顆 魔法豆的袋子)魔法豆的數目 相等。一旦把魔法豆從袋子中取出,你不能再將它放到任何袋子中。
請返回你需要拿出魔法豆的 最少數目。
2024年1月19日
【leetcode】600. 不含連續1的非負整數
題意:
給定一個正整數
n
,請你統計在[0, n]
範圍的非負整數中,有多少個整數的二進位制表示中不存在 連續的 1 。
2024年1月22日
【leetcode】670. 最大交換
題意:
給定一個非負整數,你至多可以交換一次數字中的任意兩位。返回你能得到的最大值。
2024年1月23日
【leetcode】2765. 最長交替子陣列
題意:
給你一個下標從 0 開始的整數陣列
nums
。如果nums
中長度為m
的子陣列s
滿足以下條件,我們稱它是一個 交替子陣列 :
m
大於1
。s1 = s0 + 1
。- 下標從 0 開始的子陣列
s
與陣列[s0, s1, s0, s1,...,s(m-1)%2]
一樣。也就是說,s1 - s0 = 1
,s2 - s1 = -1
,s3 - s2 = 1
,s4 - s3 = -1
,以此類推,直到s[m - 1] - s[m - 2] = (-1)^m
。請你返回
nums
中所有 交替 子陣列中,最長的長度,如果不存在交替子陣列,請你返回-1
。子陣列是一個陣列中一段連續 非空 的元素序列。
2024年1月24日
【leetcode】2865. 美麗塔 I
題意:
給你一個長度為
n
下標從 0 開始的整數陣列maxHeights
。你的任務是在座標軸上建
n
座塔。第i
座塔的下標為i
,高度為heights[i]
。如果以下條件滿足,我們稱這些塔是 美麗 的:
1 <= heights[i] <= maxHeights[i]
heights
是一個 山脈 陣列。如果存在下標
i
滿足以下條件,那麼我們稱陣列heights
是一個 山脈 陣列:
- 對於所有
0 < j <= i
,都有heights[j - 1] <= heights[j]
- 對於所有
i <= k < n - 1
,都有heights[k + 1] <= heights[k]
請你返回滿足 美麗塔 要求的方案中,高度和的最大值 。
2024年1月25日
【leetcode】2859. 計算 K 置位下標對應元素的和
題意:
給你一個下標從 0 開始的整數陣列
nums
和一個整數k
。請你用整數形式返回
nums
中的特定元素之 和 ,這些特定元素滿足:其對應下標的二進位制表示中恰存在k
個置位。整數的二進位制表示中的 1 就是這個整數的 置位 。
例如,
21
的二進位制表示為10101
,其中有3
個置位。
2024年1月26日
【leetcode】19. 刪除連結串列的倒數第 N 個結點
題意:
給你一個連結串列,刪除連結串列的倒數第
n
個結點,並且返回連結串列的頭結點。
2024年1月27日
【leetcode】2861. 最大合金數
題意:
假設你是一家合金製造公司的老闆,你的公司使用多種金屬來製造合金。現在共有
n
種不同型別的金屬可以使用,並且你可以使用k
臺機器來製造合金。每臺機器都需要特定數量的每種金屬來建立合金。對於第
i
臺機器而言,建立合金需要composition[i][j]
份j
型別金屬。最初,你擁有stock[i]
份i
型別金屬,而每購入一份i
型別金屬需要花費cost[i]
的金錢。給你整數
n
、k
、budget
,下標從 1 開始的二維陣列composition
,兩個下標從 1 開始的陣列stock
和cost
,請你在預算不超過budget
金錢的前提下,最大化 公司製造合金的數量。所有合金都需要由同一臺機器製造。
返回公司可以製造的最大合金數。
2024年1月28日
【leetcode】365. 水壺問題
題意:
有兩個水壺,容量分別為
jug1Capacity
和jug2Capacity
升。水的供應是無限的。確定是否有可能使用這兩個壺準確得到targetCapacity
升。如果可以得到
targetCapacity
升水,最後請用以上水壺中的一或兩個來盛放取得的targetCapacity
升水。你可以:
- 裝滿任意一個水壺
- 清空任意一個水壺
- 從一個水壺向另外一個水壺倒水,直到裝滿或者倒空
2024年1月30日
【leetcode】2808. 使迴圈陣列所有元素相等的最少秒數
題意:
給你一個下標從 0 開始長度為
n
的陣列nums
。每一秒,你可以對陣列執行以下操作:
- 對於範圍在
[0, n - 1]
內的每一個下標i
,將nums[i]
替換成nums[i]
,nums[(i - 1 + n) % n]
或者nums[(i + 1) % n]
三者之一。注意,所有元素會被同時替換。
請你返回將陣列
nums
中所有元素變成相等元素所需要的 最少 秒數。
2024年1月31日
【leetcode】2670. 找出不同元素數目差陣列
題意:
給你一個下標從 0 開始的陣列
nums
,陣列長度為n
。
nums
的 不同元素數目差 陣列可以用一個長度為n
的陣列diff
表示,其中diff[i]
等於字首nums[0, ..., i]
中不同元素的數目 減去 字尾nums[i + 1, ..., n - 1]
中不同元素的數目。返回
nums
的 不同元素數目差 陣列。注意
nums[i, ..., j]
表示nums
的一個從下標i
開始到下標j
結束的子陣列(包含下標i
和j
對應元素)。特別需要說明的是,如果i > j
,則nums[i, ..., j]
表示一個空子陣列。