給定一組數(未排序), 求它們的所有組合可能.
如給定, 返回:
[ [1] [2] [3] [1 2] [1 3] [2 3] [1 2 3] ]
演算法思路:
對陣列排序, 從小到大;
令 i = 0, 對已有組合v從後往前進行如下操作
v的最後1個組合內加入第i個元素;
將新組合加入到v中
演算法的理解可以通過乙個例子來看:
給定s = ,
v =
i = 0, j = 1, v = [
[1]] // back().push_back(s[0])
i = 1, j = 2, v = [
[1] | [1 2] [2]
] // j = 2, add 2 new elems
i = 2, j = 4, v = [
[1][1 2]
[2] | [2 3]
[1 2 3]
[1 3]
[3]]
相同顏色前者為原有元素, 後者為增加後的元素.
**:
1class
solution 12}
13return
v;14
}15 };
LeetCode 陣列系列(子串行)
53.maximum subarray 題目 求最大子串行和 思路 動態規劃 n為連續項之和,如果n 0,將n令為0,即前幾項之和小於零,重新開始計算。public class solution if n 0 return ret 152.maximum product subarray 題目 求最...
LeetCode 字串系列(子串)
30.substring with concatenation of all words 題目 在s找到所有words中所有字串串起來的子字串 包括words中所有字串 的起始位置 思路 參考了別人的解法,but超時,記錄一下。將words中的所有單詞建乙個hashmap,單詞和出現次數。每次新建乙...
leetcode系列 演算法 中等 子集 II
所有可能 回溯 剪枝 需要考慮的是不能包含重複的子集,所以在遍歷時,如果某個元素已經當做首字元遍歷過了,則需要跳過相同元素,使用下乙個不重複的元素繼續進行回溯 class solution def subsetswithdup self,nums list int list list int def...