p129 División de lista enlazada (leetcode 86)

Uno: solución al problema

Tiempo: O (n), Espacio: O (1)

Dos: ejemplos de código completos (versión C ++ y versión Java)

C ++:

clase Solución {
 public : 
    ListNode * partición (ListNode * head, int x) 
    { 
        if (head == NULL) return NULL; 
        ListNode * más pequeño = nuevo ListNode ( 0 ); 
        ListNode * mayor = nuevo ListNode ( 0 ); 
        ListNode * ps = más pequeño; 
        ListNode * pg = mayor;
        para (ListNode * p = head; p! = NULL; p = p-> next) 
        { 
            if (p-> val < x)
            {
                ps -> siguiente = p; 
                ps = ps-> siguiente; 
            } 
            más 
            { 
                pg -> siguiente = p; 
                pg = pg-> siguiente; 
            } 
        } 

        ps -> siguiente = mayor-> siguiente; 
        pg -> siguiente = NULL; 

        volver más pequeño-> siguiente; 
    } 
};

Java:

clase Solución {
         partición pública ListNode (encabezado ListNode, int x) 
        { 
              if (head == null ) return  null ; 
              ListNode más pequeño = nuevo ListNode ( 0 ); 
              ListNode mayor = nuevo ListNode ( 0 ); 
              ListNode ps = más pequeño; 
              ListNode pg = mayor;
              for (ListNode p = head; p! = null ; p = p.next) 
              { 
                  if(p.val < x) 
                  { 
                      ps.next = p; 
                      ps = ps.siguiente; 
                  } 
                  más 
                  { 
                      pg.next = p; 
                      pg = pg.siguiente; 
                  } 
              } 
              
              ps.next = mayor.next ; 
              pg.next = null ; 
              
              volver más pequeño.siguiente; 
        } 
    }

 

Supongo que te gusta

Origin www.cnblogs.com/repinkply/p/12705827.html
Recomendado
Clasificación