請你將一些箱子裝在一輛卡車上。給你乙個二維陣列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
,包含若干互不相同的整數,以及另乙個整數陣列arr
,arr
可能包含重複元素。
每一次操作中,你可以在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...