lunes, 28 de octubre de 2024

Otro problema de leetcode que me mata

 Delete Node in a Linked List - LeetCode


Intenté resolver ese problema usando el siguiente algoritmo erróneo:

void deleteNode(struct ListNode* node) {
    struct ListNode* tmp = node;
    struct ListNode* anteultimo = node;
    struct ListNode* ultimo = node;
    
    // Busco ultimo y antiultimo
    while (ultimo->next != NULL){
        ultimo = ultimo->next;
    }
    
    while (anteultimo->next != ultimo){
        anteultimo = anteultimo->next;
    }
    // Borro el último
    anteultimo->next = NULL;
    
    while(tmp->next != NULL){
        tmp->val = tmp->next->val;
        tmp = tmp->next;
    }
}

Y esta era la verdera solución:

void deleteNode(struct ListNode* node) {
    node->val = node->next->val;
    node->next = node->next->next;

0 comentarios:

Publicar un comentario