朝花夕拾 LeetCode刷題合輯

2022-09-27 21:18:25 字數 903 閱讀 2898

20220228 1601. 最多可達成的換樓請求數目

方法一:dfs 列舉

列舉所有換樓請求的選擇與不選擇兩種情況,最後判斷是否滿足題意,時間複雜度為 o(2 ^ m),m 為請求個數,依題意 m <= 16,符合要求。

1 #include 2

3const

int n = 25;4

5class

solution

17return

x; 18}

19 b[o] = 1

;20 res = dfs(o + 1, x + 1

, n, m);

21 b[o] = 0

;22 res = max(res, dfs(o + 1

, x, n, m));

23return

res;24}

25int maximumrequests(int n, vectorint>>&requests)

32 };

其實不用轉換為二維陣列,可以節省空間,並且 dfs 過程中就可以維護是否滿足條件而不需要最後用 for 迴圈判斷,**有優化空間。

方法二:二進位制位運算列舉

由於對於請求只有選擇與不選擇兩種可能,使用二進位制位運算,會大幅精簡**,但需要再最後用 for 迴圈判斷是否滿足條件,故時間複雜度會達到 o(n * 2 ^ m)。

1

const

int n = 25;2

3class

solution

18return

ans;19}

20 };

其他:最小費用最大流

由於資料量並不大,用網路流有點殺雞用牛刀了。

leetcode刷題之旅(39)組合總和

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 輸入 candida...

leetcode刷題 40組合總和2

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。此題思路與39題類似,利用回溯的方式,但是難點在於不能重複利用。避免重複要讓同一層級不出現相同的元素,卻...

LeetCode刷題筆記 40 組合總和 II

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 ...