[LeetCode] 90. Subconjuntos II

Subconjunto II. El significado de la pregunta es casi el mismo que el de la pregunta 78. La única condición adicional es que hay elementos duplicados en la entrada, pero no envíe repetidamente el mismo subconjunto. Ejemplo

Ejemplo:

Entrada: [1,2,2] 
Salida: 
[ 
  [2], 
  [1], 
  [1,2,2], 
  [2,2], 
  [1,2], 
  [] 
]

La idea es regresar y aplicar la plantilla de 78 preguntas. Tenga en cuenta que esta pregunta debe ordenar la entrada. En la función auxiliar, debe omitir los mismos elementos.

Tiempo O (nlogn) -porque la entrada ordenada + O (2 ^ n) = O (2 ^ n)

Espacio O (n)

Implementación de Java

1  clase de soluciones {
 2      pública Lista <Lista <entero >> subsetsWithDup ( int [] nums) {
 3          Lista <Lista <entero >> res = nuevo ArrayList <> ();
4          // caso de esquina 
5          if (nums == null || nums.length == 0 ) {
 6              return res;
7          }
 8          Arrays.sort (números);
9          helper (res, nueva ArrayList <> (), nums, 0 );
10          res de retorno ;
11      }
 12  
13      asistente vacío privado (List <List <Integer>> res, List <Integer> list, int [] nums, int start) {
 14          res.add ( new ArrayList <> (list));
15          for ( int i = start; i <nums.length; i ++ ) {
 16              if (i! = Start && nums [i] == nums [i - 1 ])
 17                  continue ;
18              list.add (números [i]);
19              ayudantes (res, list, nums, i + 1 );
20              list.remove (list.size () - 1 );
21          }
 22      }
23 }

 

Supongo que te gusta

Origin www.cnblogs.com/aaronliu1991/p/12710043.html
Recomendado
Clasificación