Leetcode-018 de cuatro y el número de

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

 

Supongo que te gusta

Origin www.cnblogs.com/huangzengrui/p/12452577.html
Recomendado
Clasificación