Leetcode演算法學習日誌 78 Subsets

2021-08-10 11:54:15 字數 990 閱讀 3513

given a set ofdistinctintegers, nums, return all possible subsets (the power set).

note:the solution set must not contain duplicate subsets.

for example,

ifnums=[1,2,3], a solution is:

[

[3],

[1],

[2],

[1,2,3],

[1,3],

[2,3],

[1,2],

]

給一組數,輸出其所有無序子陣列,空子陣列也考慮在內。

本題很容易想到寫出一棵子集樹,用回溯的方法解,只是沒有任何剪枝函式,僅僅深度優先遍歷這個子集樹,c++**如下:

class solution 

dfs(++k);

k--;

temp.push_back(nums[k-1]);

dfs(++k);

temp.pop_back();

}vector> subsets(vector& numbers)

};

注意由於子集樹是乙個二叉樹,因此dfs內部不需要用for迴圈遍歷同層,只需要先後進行兩次遞迴呼叫dfs,用於選擇0和1,對應不取或取相應數字。上述演算法和backtracking類似。

本題還有乙個比較巧妙的方法,同樣是通過那棵二叉樹找到靈感。用0-2^n-1這幾個數作為最終輸出中的2^n個vector的序號,對序號所表示數的二進位制進行檢測,某一位為1代表該vector擁有對應的乙個數,依次將數填入res中。c++**如下:

class solution 

}return res;

}};

演算法學習日誌

計畫 預計兩個月。乙個月 實際情況 快速排序。演算法思想 分治 時間複雜度 o nlogn 2020 5 13 歸併排序。演算法思想 分治 時間複雜度 o nlogn 2020 5 14 整數二分。難點,劃重點。注1 捋一下搞不懂的地方,對於求上下界問題中的check 函式很亂。注2 演算法思想 折...

LeetCode 演算法學習 2

longest substring without repeating characters given a string,find the length of the longest substring without repeating characters.example 1 input ab...

LeetCode演算法學習十一 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...