Delete duplicate-value nodes from a sorted linked list

Sort by

recency

|

929 Discussions

|

  • + 0 comments

    Here is Delete duplicate-value nodes from a sorted linked list solution in python, java, c++ and c programming - https://programmingoneonone.com/hackerrank-delete-duplicate-value-nodes-from-a-sorted-linked-list-solution.html

  • + 0 comments

    Java 15 Solution

    import java.io.*;
    import java.math.*;
    import java.security.*;
    import java.text.*;
    import java.util.*;
    import java.util.concurrent.*;
    import java.util.function.*;
    import java.util.regex.*;
    import java.util.stream.*;
    import static java.util.stream.Collectors.joining;
    import static java.util.stream.Collectors.toList;
    
    class SinglyLinkedListNode {
        public int data;
        public SinglyLinkedListNode next;
    
        public SinglyLinkedListNode(int nodeData) {
            this.data = nodeData;
            this.next = null;
        }
    }
    
    class SinglyLinkedList {
        public SinglyLinkedListNode head;
        public SinglyLinkedListNode tail;
    
        public SinglyLinkedList() {
            this.head = null;
            this.tail = null;
        }
    
        public void insertNode(int nodeData) {
            SinglyLinkedListNode node = new SinglyLinkedListNode(nodeData);
    
            if (this.head == null) {
                this.head = node;
            } else {
                this.tail.next = node;
            }
    
            this.tail = node;
        }
    }
    
    class SinglyLinkedListPrintHelper {
        public static void printList(SinglyLinkedListNode node, String sep, BufferedWriter bufferedWriter) throws IOException {
            while (node != null) {
                bufferedWriter.write(String.valueOf(node.data));
    
                node = node.next;
    
                if (node != null) {
                    bufferedWriter.write(sep);
                }
            }
        }
    }
    
    class Result {
    
        /*
         * Complete the 'removeDuplicates' function below.
         *
         * The function is expected to return an INTEGER_SINGLY_LINKED_LIST.
         * The function accepts INTEGER_SINGLY_LINKED_LIST llist as parameter.
         */
    
        /*
         * For your reference:
         *
         * SinglyLinkedListNode {
         *     int data;
         *     SinglyLinkedListNode next;
         * }
         *
         */
    
        public static SinglyLinkedListNode removeDuplicates(SinglyLinkedListNode llist) {
        // Write your code here
            SinglyLinkedListNode current = llist;
            
            while (current != null && current.next != null) {
                if (current.data == current.next.data) {
                    current.next = current.next.next;
                } else {
                    current = current.next;
                }
            }
            
            return llist;
        }
    
    }
    
    public class Solution {
        public static void main(String[] args) throws IOException {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
    
            int t = Integer.parseInt(bufferedReader.readLine().trim());
    
            IntStream.range(0, t).forEach(tItr -> {
                try {
                    SinglyLinkedList llist = new SinglyLinkedList();
    
                    int llistCount = Integer.parseInt(bufferedReader.readLine().trim());
    
                    IntStream.range(0, llistCount).forEach(i -> {
                        try {
                            int llistItem = Integer.parseInt(bufferedReader.readLine().trim());
    
                            llist.insertNode(llistItem);
                        } catch (IOException ex) {
                            throw new RuntimeException(ex);
                        }
                    });
    
                    SinglyLinkedListNode llist1 = Result.removeDuplicates(llist.head);
    
                    SinglyLinkedListPrintHelper.printList(llist1, " ", bufferedWriter);
                    bufferedWriter.newLine();
                } catch (IOException ex) {
                    throw new RuntimeException(ex);
                }
            });
    
            bufferedReader.close();
            bufferedWriter.close();
        }
    }
    
  • + 0 comments
    def removeDuplicates(llist):
        result = SinglyLinkedList()
        current = llist
        s = set()
        while current:
            if current.data not in s:
                s.add(current.data)
                result.insert_node(current.data)
            current = current.next
        return result.head
    
  • + 0 comments

    def removeDuplicates(llist): if llist is None: return llist

    current = llist
    while current.next:
        if current.data == current.next.data:
            # skip duplicate
            current.next = current.next.next
        else:
            current = current.next
    
    return llist
    
  • + 0 comments

    def removeDuplicates(llist): if llist is None: return llist

    current = llist
    while current.next:
        if current.data == current.next.data:
            # skip duplicate
            current.next = current.next.next
        else:
            current = current.next
    
    return llist