Diseño de estructura de datos para realizar las operaciones requeridas.

Diseñe una estructura de datos que pueda realizar las siguientes operaciones

  1. agregar() en O (n)
  2. getMinimum() en O(1)
  3. deleteMinimum() en O(1)

Fuente: Entrevista de MakeMyTrip.

  1. Mantenga una lista enlazada con elementos en orden creciente.
  2. Mueve el cabezal a la siguiente posición en caso de eliminar la operación Min.
  3. Devuelve el primer elemento en caso de obtener la operación mínima.
// Java code for linked list to
// perform required operations
import java.util.*;
  
// Node class
class Node
{
    int data;
    Node next;
  
    Node(int d)
    {
        data = d;
        next = null;
    }
}
  
// main class
class MinDS
{
    Node start;
  
    public MinDS()
    {
        start = null;
    }
  
    // Function to add element
    void addElement(int d)
    {
        Node tmp = new Node(d);
  
        // If linked list is empty
        if (start == null)
        {
            start = tmp;
            return;
        }
  
        // If head itself is greater
        if (d < start.data)
        {
            tmp.next = start;
            start = tmp;
            return;
        }
          
        // If need to insert somewhere in middle
        Node prev = start;
        Node ptr = start.next;
        while (ptr != null)
        {
            if (d < ptr.data)
            {
                tmp.next = ptr;
                prev.next = tmp;
                return;
            }
            else
            {
                prev = ptr;
                ptr = ptr.next;
            }
        }
        prev.next = tmp;
    }
  
    // Function to get minimum
    int getMin()
    {
        return start.data;
    }
  
    // Function to delete minimum
    int delMin()
    {
        int min = start.data;
        start = start.next;
        return min;
    }
  
    // Function to print elements
    void print()
    {
        Node ptr = start;
        System.out.print("Elements: ");
        while (ptr != null)
        {
            System.out.print(ptr.data + ", ");
            ptr = ptr.next;
        }
        System.out.println("\n");
    }
  
    // Driver code
    public static void main(String[] args)
    {
        MinDS x = new MinDS();
        x.addElement(10);
        x.addElement(20);
        x.addElement(5);
        x.addElement(15);
        x.print();
  
        System.out.println("Get Min: " + x.getMin());
        System.out.println("Del Min: " + x.delMin());
        x.print();
  
        System.out.println("Min: " + x.getMin());
    }
}
Producción:

Elements: 5, 10, 15, 20, 

Get Min: 5
Del Min: 5
Elements: 10, 15, 20, 

Min: 10

Publicación traducida automáticamente

Artículo escrito por amansharma26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *