LeetCode第280場周賽題解

2022-09-21 02:12:10 字數 2154 閱讀 4220

題目描述:給你兩個非負整數,使用輾轉相減法,求最大公約數,問相減的次數。

思路:根據題意模擬即可。

時間複雜度:\(o(n)\),\(n\)為數字範圍

class solution 

return res;

}};

題目描述:給你乙個陣列,讓你將奇數下標和偶數下標的數字分別變相等但相鄰數字不同的最小操作次數

思路:明顯的貪心,根據情況討論即可

時間複雜度:\(o(n)\)

class solution 

int res = int_max;

vector> idx0(2 , vector(2 , 0)), idx1(2 , vector(2 , 0));

for(int i = 1 ; i < 100005 ; ++i)

else if(cnt0[i] > idx0[0][1])

}if(cnt1[i] != 0)

else if(cnt1[i] > idx1[0][1])}}

if(idx0[1][0] != idx1[1][0]) res = p - idx0[1][1] + q - idx1[1][1];

else

return res;

}};

題目描述:給你乙個 正 整數陣列beans,其中每個整數表示乙個袋子裡裝的魔法豆的數目。請你從每個袋子中 拿出 一些豆子(也可以 不拿出),使得剩下的 非空 袋子中(即 至少 還有 一顆 魔法豆的袋子)魔法豆的數目 相等 。一旦魔法豆從袋子中取出,你不能將它放到任何其他的袋子中。請你返回你需要拿出魔法豆的 最少數目。

思路:比較明顯的\(dp\),假設我們的目標值是\(x\),那麼對於小於\(x\)的袋子裡面的魔法豆要全部拿出,對於大於\(x\)的袋子的魔法豆要拿出一部分。

定義狀態\(f_i\)表示小於等於\(x\)的袋子的魔法豆數量的總和。定義狀態\(g_i\)表示所有袋子的魔法豆減小到不超過\(x\)需要拿出的魔法豆的數量,則轉移方程為:

\[f_i = f_ + i * cnt_i\\

g_i = g_ + sum

\]其中\(cnt_i\)表示魔法豆數量為\(i\)的袋子的數量,\(sum = \sum\limits_^cnt_j\)。

最終答案就是\(\mathop\limits_^ f_ + g_i\)

時間複雜度:\(o(n)\)

class solution 

for(int i = 1 ; i < n - 4 ; ++i) res = min(res , f[i - 1] + g[i]);

return res;

}};

題目描述:有\(m\)個桶從\(1\)開始編號,再給你乙個長度為\(n\)的陣列\(nums\),讓你將這些數字放入任意乙個桶中,但桶中的數字不超過\(2\)個。對於每乙個數字貢獻為桶的編號\(idx\)與該值的and,假設這個數字是\(nums_i\)則貢獻為\(nums_i \& idx\)。問最大的貢獻和是多少。

資料範圍:\(1 \leq m \leq 9 , 1 \leq n \leq 2 * m\)

思路:考慮到資料範圍很小,比較容易想到爆搜或者狀壓\(dp\)。由於每個桶中的元素個數不超過\(2\),故我們把桶的數量乘以\(2\),然後每個桶的編號就是\(\frac + 1\)。這樣每個桶中最多放乙個元素。當數字\(nums_i\)放入桶\(idx\)中時,對答案的貢獻為\((\frac + 1) \& nums_i\)。我們考慮狀壓\(dp\),定義狀態\(f_i\)表示列舉第\(count_i\)個數字時的最大價值。\(count_i\)表示\(i\)中二進位制位為\(1\)的數量。那麼對於每乙個\(i\)中二進位制位為\(0\)的位置都可以計算價值。轉移方程為:

\[f_ = f_i + ((\frac + 1) \& nums_k)

\]其中\((i >> j \&1) == 0\),\(k = count_i\)。

時間複雜度:\(o(2m \times 2^)\)

class solution 

public:

int maximumandsum(vector& nums, int numslots)

}return res;

}};

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...