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 }