LeetCode 第 222 場周賽

2022-07-08 02:09:11 字數 4284 閱讀 4090

請你將一些箱子裝在一輛卡車上。給你乙個二維陣列boxtypes,其中boxtypes[i] = [numberofboxesi, numberofunitsperboxi]

整數trucksize表示卡車上可以裝載箱子最大數量。只要箱子數量不超過trucksize

,你就可以選擇任意箱子裝到卡車上。

返回卡車可以裝載單元最大總數 。

示例 1:

**輸入:** boxtypes = [[1,3],[2,2],[3,1]], trucksize = 4

**輸出:** 8

**解釋:** 箱子的情況如下:

- 1 個第一類的箱子,裡面含 3 個單元。

- 2 個第二類的箱子,每個裡面含 2 個單元。

- 3 個第三類的箱子,每個裡面含 1 個單元。

可以選擇第一類和第二類的所有箱子,以及第三類的乙個箱子。

單元總數 = (1 * 3) + (2 * 2) + (1 * 1) = 8

示例 2:

**輸入:** boxtypes = [[5,10],[2,5],[4,7],[3,9]], trucksize = 10

**輸出:** 91

排序貪心即可。

class solution );

int ans(0);

for (int i = 0; i < boxtypes.size(); i++)

return ans;

}};

大餐是指恰好包含兩道不同餐品的一餐,其美味程度之和等於 2 的冪。

你可以搭配任意兩道餐品做一頓大餐。

給你乙個整數陣列deliciousness,其中deliciousness[i]是第i​​​​​​​​​​​​​​

道餐品的美味程度,返回你可以用陣列中的餐品做出的不同大餐的數量。結果需要對109 + 7取餘。

注意,只要餐品下標不同,就可以認為是不同的餐品,即便它們的美味程度相同。

示例 1:

**輸入:** deliciousness = [1,3,5,7,9]

**輸出:** 4

**解釋:** 大餐的美味程度組合為 (1,3) 、(1,7) 、(3,5) 和 (7,9) 。

它們各自的美味程度之和分別為 4 、8 、8 和 16 ,都是 2 的冪。

示例 2:

**輸入:** deliciousness = [1,1,1,3,3,3,7]

**輸出:** 15

**解釋:** 大餐的美味程度組合為 3 種 (1,1) ,9 種 (1,3) ,和 3 種 (1,7) 。

有卡常 ……

class solution ;

int ans(0);

const int mod = 1e9 + 7;

const int n = deliciousness.size();

for (int i : deliciousness) g[i]++;

sets;

for (int i : deliciousness) s.insert(i);

for (int i = 1; i <= (1 << 21); (i <<= 1))

}return ans;

}};

我們稱乙個分割整數陣列的方案是好的,當它滿足:

給你乙個非負整數陣列nums,請你返回好的分割nums方案數目。由於答案可能會很大,請你將結果對109 + 7

取餘後返回。

示例 1:

**輸入:** nums = [1,1,1]

**輸出:** 1

**解釋:** 唯一一種好的分割方案是將 nums 分成 [1] [1] [1] 。

示例 2:

**輸入:** nums = [1,2,2,2,5,0]

**輸出:** 3

**解釋:** nums 總共有 3 種好的分割方案:

[1] [2] [2,2,5,0]

[1] [2,2] [2,5,0]

[1,2] [2,2] [5,0]

示例 3:

**輸入:** nums = [3,2,1]

**輸出:** 0

**解釋:** 沒有好的分割方案。

二分

class solution 

int ans(0);

const int mod = 1e9 + 7;

for (int i = 0; i < n - 2 && s[i] <= s[n - 1] / 3; i++)

return ans;

}};

雙指標(y總太強啦)。只考慮了 left 和 mid 的分隔,沒有單調性。但是,考慮 mid 和 right 的分隔時,left 和 mid 的分隔可以雙指標。

class solution 

return ans;

}};

給你乙個陣列target,包含若干互不相同的整數,以及另乙個整數陣列arrarr可能包含重複元素。

每一次操作中,你可以在arr的任意位置插入任一整數。比方說,如果arr = [1,4,1,2],那麼你可以在中間新增3得到

[1,4, **3** ,1,2]。你可以在陣列最開始或最後面新增整數。

請你返回最少操作次數,使得 __target__ 成為arr的乙個子串行。

乙個陣列的子串行指的是刪除原陣列的某些元素(可能乙個元素都不刪除),同時不改變其餘元素的相對順序得到的陣列。比方說,[2,7,4]

[4, **2** ,3, **7** ,2,1, **4** ]的子串行(加粗元素),但[2,4,2]不是子串行。

示例 1:

**輸入:** target = [5,1,3], arr = [9,4,2,3,4]

**輸出:** 2

**解釋:** 你可以新增 5 和 1 ,使得 arr 變為 [ **5** ,9,4, **1** ,2,3,4] ,target 為 arr 的子串行。

示例 2:

**輸入:** target = [6,4,8,1,3,2], arr = [4,7,6,2,3,8,6,1]

**輸出:** 3

滿足唯一性時,lcs(最長公共子串行) 轉為 lis (最長上公升子串行)。

知識點++。

class solution 

int len = 0;

vectorq(a.size() + 1);

for (int i = 0; i < a.size(); i++)

len = max(len, r + 1);

q[r + 1] = a[i];

}return target.size() - len;

}};

leetcode 第132場周賽

愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...

leetcode周賽 第176場

題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...

leetcode 第 180 場周賽

大佬都是3 5分鐘一題,而我10分鐘一題,最後一題還不會。qaq 5356.矩陣中的幸運數 給你乙個m n的矩陣,矩陣中的數字各不相同。請你按任意順序返回矩陣中的所有幸運數。幸運數是指矩陣中滿足同時下列兩個條件的元素 class solution object def luckynumbers se...