Y triplicar el número de ideas y, al igual que la primera especie, y haga doble puntero.
clase de soluciones { pública (List <Lista <entero >> fourSum int nums [], int objetivo) { Arrays.sort (nums); Lista <Lista <entero >> res = nuevo ArrayList <> (); si (nums.length == 0) { retorno res;} para ( int i1 = 0; i1 <nums.length-3; i1 ++ ) { si (i1> 0 && nums [i1-1] == nums [i1]) { continuar ;} para ( int i2 = i1 + 1; i2 <nums.length-2; i2 ++ ) { si (i2> i1 + 1 &&;} Int i3 = i2 + 1 ; int i4 = nums.length-1 ; mientras que (i3 < i4) { si (nums [i1] + nums [i2] + nums [i3] + nums [i4] == objetivo) { res.add (Arrays.asList (nums [i1], nums [i2] , nums [i3], nums [i4])); mientras que (i3 <i4 && nums [i3 + 1] == nums [i3]) {i3 ++ ;} mientras que (i3 <i4 && nums [i4-1] == nums [i4]) {i4-- ;} i3 ++ ; i4 - ; } Demás si(nums [i1] + nums [i2] + nums [i3] nums + [i4] < objetivo) { i3 ++ ; } Demás { i4 - ; } } } } Volver res; } }
clase Solución: def fourSum (self, nums: Listado [int], objetivo: int) -> Lista [Lista [int]]: si no nums: retorno [] nums.sort () res = [] para i1 en el rango ( len (nums) -3 ): si i1> 0 y nums [i1] == nums [i1-1 ]: continúan para i2 en gama (i1 + 1, len (nums) -2 ): si i2> i1 + 1 y nums [i2] == nums [I2-1 ]: continuar i3 = i2 + 1 i4 = len (nums) -1 mientras i3 < i4: si nums [i1] + nums [i2] + nums [i3] + nums [i4] == objetivo: res.append ([nums [i1 ], nums [i2], nums [i3], nums [i4]]) mientras i3 <i4 y nums [i3 + 1] == nums [i3]: i3 + = 1 mientras i3 <i4 y nums [i4-1 ] == nums [i4]: i4 - = 1 i3 + = 1 i4 - = 1 elif nums [i1] + nums [i2] + nums [i3] + nums [i4] < diana: i3 + = 1 else : i4 - = 1 retorno res