Giter Site home page Giter Site logo

zjaaal / experiments Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 32 KB

Here I just mess around with code. I like to reverse engineer things, so expect re-implementations. Just for educational purposes.

License: MIT License

JavaScript 95.48% HTML 4.52%
data-structures-and-algorithms javascript reverse-engineering

experiments's Introduction

Frontend Developer

I have been engaged in coding since 2020. I am a technology enthusiast and a lifelong learner.

  • 🌍 I'm from Venezuela. Currently living in Buenos Aires, Argentina.
  • ✉️ You can contact me at [email protected]
  • 📌 Connect with me on LinkedIn

Stats

My CodeWars Stats

CodeWars Stats

My GitHub Stats

zjaaal's GitHub stats

Top Languages

experiments's People

Contributors

zjaaal avatar

Stargazers

 avatar

Watchers

 avatar

experiments's Issues

DS&A Roadmap

Tome esto de coding-interview-university

Estructuras de datos

  • Arreglos

    • Implemente un vector automáticamente redimensionable.
    • Descripción:
    • Implemente un vector (Arreglo mutable con redimensionamiento automático):
      • Practique codificar usando arreglos y apuntadores, y un apuntador matemático para saltar a un índice en lugar de utilizar la indexación.
      • Nuevo arreglo de información primaria con memoria asignada.
        • Puede asignar un arreglo entero, simplemente no use sus características.
        • Empiece con 16, o si el número inicial es mayor, use potencias del 2 - 16, 32, 64, 128.
      • size() – Número de elementos.
      • capacity() – Número de elementos soportados.
      • is_empty()
      • at(index) – Regresa el elemento al índice dado. Falla si el índice esta fuera de sus limites.
      • push(item)
      • insert(index, item) – Inserta el elemento en el índice, intercambia el valor del índice y desplaza los elementos a la derecha.
      • prepend(item) – Puede usar para insertar encima del índice 0.
      • pop() – Elimina del final, regresa el valor.
      • delete(index) – Elimina el elemento en el índice, intercambia todos desplazándolos a la izquierda.
      • remove(item) – Busca el valor y elimina el índice que lo contiene, aunque este en varios lugares.
      • find(item) – Busca el valor y regresa el primer índice con ese valor, devuelve -1 si no lo encuentra.
      • resize(Nueva capacidad) // Función privada.
        • Cuando alcance el límite, redimensiona al doble el tamaño.
        • Cuando se haga “pop” a un elemento, si el tamaño es 1/4 de la capacidad, redimensiona a la mitad.
    • Tiempo:
      • O(1) Para añadir/eliminar al final (Amortizado para asignaciones por más espacio), índice o actualización.
      • O(n) Para insertar/eliminar donde sea.
    • Espacio:
      • Contiguo en la memoria, por lo que la proximidad ayuda al rendimiento.
      • Espacio necesario = (capacidad de matriz, que es> = n) * tamaño del elemento, pero incluso si 2n, todavía O (n))
  • Listas Enlazadas

    • Descripción:
    • C Code (video)
      - No todo el video, solo porciones acerca de la estructura de nodos y la asignación de memoria.
    • Listas enlazadas vs Arreglos:
    • why you should avoid linked lists (video)
    • Gotcha: Necesita tener conocimiento del apuntador a apuntador:
      (Cuando se pasa un apuntador a una función este puede cambiar la dirección a la que el apuntador apunta)
      Esta página es sólo para tener una idea sobre un apuntador a un apuntador. No recomiendo esta lista de estilo transversal. La legibilidad y sostenibilidad sufren debido a la astucia.
    • Implemente (Lo hice con y sin un puntero de cola):
      • size() – Regresa el número de elementos en la lista.
      • empty() – Un bool que regresa verdadero si está vacío.
      • value_at(index) – Regresa el valor del el n-avo elemento (usando 0 como primero)
      • push_front(value) – Añade un elemento al frente de la lista.
      • pop_front() – Elimina el elemento frontal y regresa su valor.
      • push_back(value) – Añade un elemento al final.
      • pop_back() – Elimina el último elemento y devuelve su valor.
      • front() – Obtiene el valor del elemento frontal.
      • back() – Obtiene el valor del último elemento.
      • insert(index, value) – Inserta valor en el índice, por lo que el valor actual en ese índice es apuntado al nuevo elemento en el índice.
      • erase(index) – Borra el nodo del índice dado.
      • value_n_from_end(n) – Regresa el valor del nodo en la n-ava posición a partir del final de la lista.
      • reverse() – Pone al revés toda la lista.
      • remove_value(value) – Borra el primer elemento en la lista con ese valor.
    • Doble lista enlazada:
  • Pila:

    • Stacks (video)
    • No implementaré. Implementando con arreglos es trivial.
  • Cola o fila

    • Queue (video)
    • Circular buffer/FIFO
    • Implementar usando listas enlazadas, con el puntero de la cola:
      • enqueue(value) – Añade el valor en la posición de la cola.
      • dequeue() – Regresa el valor y elimina el valor más recientemente añadido(frontal)
      • empty()
    • Implementar usando arreglos de tamaño fijo:
      • enqueue(value) – Añade elemento al final del almacenamiento disponible.
      • dequeue() – Regresa el valor y elimina el elemento más recientemente añadido.
      • empty()
      • full()
    • Costo:
      • Una mala implementación usando lista enlazada donde se enqueue en la cabeza y dequeue en la cola sería O (n), porque usted necesitaría el siguiente al último elemento, causando un recorrido completo cada dequeue.
      • enqueue: O(1) (amortizado, Lista enlazada y arreglo [sondaje])
      • dequeue: O(1) (Lista enlazada y arreglo)
      • empty: O(1) (Lista enlazada y arreglo)
  • Matriz asociativa

Información adicional

Árboles

Ordenamientos

Como resumen aquí esta una representación visual de 15 algoritmos de ordenamiento
Si necesita más detalle de este tema vea “Ordenamientos” en Detalles adicionales de ciertos temas

Gráficos

Los gráficos pueden ser usados para representar muchos problemas en las Ciencias de la Computación, así que es una sección larga, como lo son los árboles y ordenamientos.

||| Obtendrá más prácticas de gráficos en el libro de Skiena (vea Sección de libros debajo) y en los libros de entrevistas.

Más información adicional

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.