Header Ad

HackerRank Day 24 More Linked Lists 30 days of code solution

In this HackerRank Day 24 More Linked Lists 30 days of code problem set, we need to complete the function removeDuplicates that can delete any node in the linked list that is duplicate. and return the head of the updated list. 



Problem solution in Python 2 programming.

    def removeDuplicates(self,head):
        #Write your code here
        current = head
        while current:
            while current.next and current.data == current.next.data:
                current.next = current.next.next
            current = current.next
        return head



Problem solution in Python 3 programming.

    def removeDuplicates(self,head):
        qu = []
        if head == None:
            return 
        p = head
        qu.append(p.data)
        p = p.next
        while p is not None:
            qu.append(p.data)
            p = p.next
        qu = list(dict.fromkeys(qu))
        for item in qu:
            print(item,end=' ')


Problem solution in java programming.

    public static Node removeDuplicates(Node head) {
        Set<Integer> set = new HashSet<Integer>();
        if (head == null) return head;
        set.add(head.data);
        Node curr = head;
        while (curr.next != null) {
            
            if (set.contains(curr.next.data)) {
                curr.next = curr.next.next;
            } else {
                set.add(curr.next.data);
                curr = curr.next;
            }            
        }
        return head;
    }


Problem solution in c++ programming.

          Node* removeDuplicates(Node *head)
          {
            //Write your code here
              if(head == nullptr){
                  return head;
              }
              
              Node *currentNode = head, *lastNode = head;
              int lastVal = head->data;
              for(;;){
                  currentNode = currentNode->next;
                  if(currentNode == nullptr){
                      break;
                  }
                  
                  int currentVal = currentNode->data;
                  if(currentVal == lastVal){
                      lastNode->next = currentNode->next;
                      currentNode = lastNode;
                  } else {
                    lastVal = currentVal;
                    lastNode = currentNode;
                  }
              }             
              return head;              
          }


Problem solution in c programming.

Node* removeDuplicates(Node *head){
  //Write your code here
    if (head == NULL || head->next == NULL) {
        return head;
    }
    
    Node *prev = head;
    Node *curr = head->next;
    
    while (curr != NULL) {
        if (prev->data == curr->data) {
            prev->next = curr->next;
            free(curr);
            curr = prev->next;
        } else {
            prev = curr;
            curr = curr->next;
        }
    }
    return head;
}


Problem solution in Javascript programming.

    this.removeDuplicates=function(head){
        var prev = null;
        var current = head;
        var arr = [];
        while(current != null) {
            if(arr[arr.length - 1] != current.data) {
                arr.push(current.data);
            } else {
                prev.next = current.next;
            }
            prev = current;
            current = current.next;
        }
        console.log(arr.join(' '));
    }


Post a Comment

1 Comments

  1. ThankU bro in solution se mein question solve kr pata hu warna kbhi kbhi confuse ho jata hu

    ReplyDelete