Q: En la actualidad existe un conjunto de número entero no hay elementos duplicados S, S Buscar todos los subconjuntos
Nota:
- Subconjunto de elementos que dan debe ser ordenada en orden no creciente
- Soluciones dadas elementos repetidos no aparecerá concentrado
Por ejemplo:
Si S = [1,2,3], Solución Set se dará:
.. [↵ [3], ↵ [1], ↵ [2], ↵ [l, 2,3], ↵ [1,. 3], ↵ [2,3], ↵ [1,2], ↵ [] ↵]
UN:
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
public ArrayList<ArrayList<Integer>> subsets(int[] nums) {
if (nums.length == 0)
return res;
//保证非递增
Arrays.sort(nums);
ArrayList<Integer> array = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
//i是这次需要的数量
DFS(array, i, 0, nums);
}
return res;
}
private void DFS(ArrayList<Integer> array, int count, int start, int[] nums) {
if (count < 0)
return;
else if (count == 0)
res.add(new ArrayList<>(array));
else {
for (int i = start; i < nums.length; i++) {
array.add(nums[i]);
//从当前的下一个开始,count的数量减一,开始的地方加一
DFS(array, count - 1, i + 1, nums);
array.remove(array.size() - 1);
}
}
}
Q: un número entero de un elemento dado puede contener duplicado conjunto S, un subconjunto de la devolución todos los conjuntos de números enteros.
nota:
- elemento subconjunto se dan con el fin de no aumentar YAOAN
- Soluciones de concentración determinado subconjunto no pueden contener duplicado
Por ejemplo:
Si S = [1,2,2], se debe dar Solution Set:
. [↵ [2], ↵ [1], ↵ [1,2,2], ↵ [2,2 &], ↵ [ 1,2], ↵ [] ↵]
A: uno más que una condición de determinación
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
public ArrayList<ArrayList<Integer>> subsets(int[] nums) {
if (nums.length == 0)
return res;
Arrays.sort(nums);
ArrayList<Integer> array = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
DFS(array, i, 0, nums);
}
return res;
}
private void DFS(ArrayList<Integer> array, int count, int start, int[] nums) {
if (count < 0)
return;
else if (count == 0)
res.add(new ArrayList<>(array));
else {
for (int i = start; i < nums.length; i++) {
if (i > start && nums[i] == nums[i - 1])
continue;
array.add(nums[i]);
DFS(array, count - 1, i + 1, nums);
array.remove(array.size() - 1);
}
}
}