Ads Here

Saturday, June 4, 2022

Delete-duplicate-value-nodes-from-a-sorted-linked-list/Solution.java

 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 first = llist;

        while (first != null) {

            SinglyLinkedListNode second = first.next;

            while (second != null && first.data == second.data)

                second = second.next;

            first.next = second;

            first = first.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();

    }

}

No comments:

Post a Comment