├── .vscode └── settings.json ├── Data Structures └── README.md ├── FAQs └── README.md ├── Meetings ├── April │ └── README.md ├── August │ └── AugustMeetings.md ├── July │ └── JulyMeetings.md ├── June │ └── README.md ├── March │ └── README.md ├── May │ └── README.md ├── README.md └── September │ └── SeptemberMeetings.md ├── Misc └── README.md ├── README.md ├── Reference Material └── README.md └── Syntax └── README.md /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "Microverse" 4 | ] 5 | } -------------------------------------------------------------------------------- /Data Structures/README.md: -------------------------------------------------------------------------------- 1 | ## Data structures 2 | Introduction to data structures: 3 | https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby-programming/lessons/common-data-structures-and-algorithms 4 | 5 | 6 | ### Arrays 7 | https://www.coursera.org/lecture/data-structures/arrays-OsBSF 8 | 9 | ### Queues 10 | https://www.coursera.org/lecture/data-structures/queues-EShpq 11 | 12 | ### Stacks 13 | https://www.coursera.org/lecture/data-structures/stacks-UdKzQ 14 | 15 | ### Linked-Lists (single-linked) 16 | https://www.coursera.org/lecture/data-structures/singly-linked-lists-kHhgK 17 | 18 | ### Binary Trees 19 | https://www.coursera.org/lecture/data-structures/trees-95qda 20 | https://opendsa-server.cs.vt.edu/ODSA/Books/Everything/html/BinaryTree.html 21 | https://inst.eecs.berkeley.edu/~cs61bl/r//cur/trees/array-repr.html?topic=lab20.topic&step=1&course= 22 | https://opendsa-server.cs.vt.edu/ODSA/Books/Everything/html/CompleteTree.html 23 | 24 | # Other resources... 25 | -------------------------------------------------------------------------------- /FAQs/README.md: -------------------------------------------------------------------------------- 1 | ## Frequently Asked questions 2 | 3 | Which is better recursion or iteration, in regards to memory usage: 4 | https://stackoverflow.com/questions/39948357/recursion-vs-iteration-with-regards-to-memory-usage 5 | 6 | How does Ruby Garbage collection work: 7 | https://stackify.com/how-does-ruby-garbage-collection-work-a-simple-tutorial/ 8 | https://scoutapm.com/blog/ruby-garbage-collection 9 | 10 | Which sorting Algorithms is the best: 11 | https://www.geeksforgeeks.org/analysis-of-different-sorting-techniques/ 12 | https://joshycsm.medium.com/which-sorting-algorithm-is-best-ca83e3cc3ca0 -------------------------------------------------------------------------------- /Meetings/April/README.md: -------------------------------------------------------------------------------- 1 | ### Meeting (05/04/2021): 2 | Graphs and Data structures 3 | https://www.youtube.com/watch?v=09_LlHjoEiY&list=WL&index=10&ab_channel=freeCodeCamp.org 4 | https://medium.com/amiralles/mastering-data-structures-in-ruby-queues-350a89fa8f79 5 | 6 | ### Meeting (12/04/2021): 7 | Implementing a Queue using 2 Stacks, Implementing a Stack using 2 Queues, Breadth-first search of a map implementation: https://www.youtube.com/watch?v=hgXYxhmo3Hk 8 | 9 | ### Meeting (19/4/2021): 10 | Detect a Cycle Implementation: https://youtu.be/IoGssiOzSuE 11 | Implementation based on this article from Geeks for Geeks: https://www.geeksforgeeks.org/detect-cycle-undirected-graph/ 12 | 13 | ### Meeting (26/4/2021): 14 | #### First part, Guest speaker Ben Gamble: https://youtu.be/EYL5foBY59M 15 | Ably Labs website: https://dev.ably.io/ 16 | Ably Labs Github (All open source projects): https://github.com/ably-labs 17 | #### Second part, Linked-Lists: https://youtu.be/-1zilRsyZTo 18 | -------------------------------------------------------------------------------- /Meetings/August/AugustMeetings.md: -------------------------------------------------------------------------------- 1 | 6ẗh August - America's Time DSA Group 2 | https://youtu.be/JXLaWuh-_NQ 3 | -------------------------------------------------------------------------------- /Meetings/July/JulyMeetings.md: -------------------------------------------------------------------------------- 1 | July 9th - America's Time DSA Group 2 | 3 | https://youtu.be/0_Mu0J3iBCU 4 | -------------------------------------------------------------------------------- /Meetings/June/README.md: -------------------------------------------------------------------------------- 1 | ### Meeting (07/6/2021): Dijkstra algorithm and how-tall-is-the-tree implementation: https://youtu.be/r9YMbeKAu4o 2 | 3 | ### Meeting (14/6/2021): Farthest Number nested solution: https://youtu.be/L5eTRc3-eIg 4 | 5 | #### Problem: https://practice.geeksforgeeks.org/contest/interview-series-amazon/problems/# 6 | 7 | ### Niall Lynch (America's time - June 14th 2021 - 4 pm UTC) 8 | 9 | https://youtu.be/uUtt15rcK2k (Part 1) 10 | 11 | https://youtu.be/YO_uOb5NxRY (Part 2) 12 | 13 | https://youtu.be/OHsgsbxpnGw (Part 3) 14 | 15 | ### Meeting (21/6/2021): Farthest Number O(N log(N)) solution: https://youtu.be/acYVWSA7BNA 16 | 17 | #### Problem: https://practice.geeksforgeeks.org/contest/interview-series-amazon/problems/# 18 | 19 | ### Meeting (28/6/2021): Median of Two Sorted Arrays: https://leetcode.com/problems/median-of-two-sorted-arrays/ 20 | -------------------------------------------------------------------------------- /Meetings/March/README.md: -------------------------------------------------------------------------------- 1 | ### Meeting (29/03/2021): 2 | Towers of Hanoi, dynamic programming, grid algorithms, greedy algorithms, menmozaition and tabulation 3 | https://www.youtube.com/watch?v=-_4Yio0yaFE&ab_channel=G%C3%BCrb%C3%BCzErtunga 4 | 5 | -------------------------------------------------------------------------------- /Meetings/May/README.md: -------------------------------------------------------------------------------- 1 | ### Meeting (03/5/2021): 2 | #### First part, Guest speaker Rich Stone (NoSql in Ruby on Rails): https://youtu.be/EYL5foBY59M 3 | 4 | #### Second part, Big O() notation: https://youtu.be/wVZSDf6uD2E 5 | 6 | ### Meeting (10/5/2021): Optimizing single_numbers function: https://youtu.be/cvQQEe58-2U 7 | #### You can find the challenge here: https://leetcode.com/problems/single-number/ 8 | 9 | 10 | ### Meeting (17/5/2021): Optimizing two_sum function: https://leetcode.com/problems/two-sum/ 11 | #### first part: https://youtu.be/XyEv6aX-Yms 12 | #### second part: https://youtu.be/lZRy55MXICw 13 | 14 | 15 | ### Meeting - 4p UTC (17/5/2021): 16 | #### Big O() notation with Ben Gamble: https://youtu.be/OJQCaZ8LTy0 17 | #### A practical approach to understanding Big O notation: 18 | https://dev.to/ablydev/building-a-realtime-multiplayer-browser-game-in-less-than-a-day-part-2-4-1p1l 19 | https://github.com/ably-labs/realtime-multiplayer-space-invaders 20 | 21 | 22 | ### Meeting (24/5/2021): Solving reverse_integer and best_time_to_buy_and_sell_stocks functions (https://leetcode.com/problems/reverse-integer/ https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ ) 23 | #### Meeting video: https://youtu.be/HtggdMpwxgQ 24 | 25 | 26 | ### Meeting (31/5/2021): Dijkstra algorithm (https://youtu.be/5F2n-BlAw3E) 27 | #### Dijkstra video explanation + pseudocode + implementation: https://www.youtube.com/watch?v=09_LlHjoEiY&t=4774s&ab_channel=freeCodeCamp.org 28 | #### Dijkstra Visualization: https://www.cs.usfca.edu/~galles/visualization/Dijkstra.html 29 | #### Dijkstra Pseudocode: http://www.gitta.info/Accessibiliti/en/html/Dijkstra_learningObject1.html 30 | #### Dijkstra implementation with Ruby: https://gist.github.com/jithinabraham/63d34bdf1c94a01d6e91864d4dc583f4 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Meetings/README.md: -------------------------------------------------------------------------------- 1 | ### [March Meetings](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Meetings/March) 2 | 3 | ### [April Meetings](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Meetings/April) 4 | 5 | ### [May Meetings](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Meetings/May) 6 | 7 | ### [June Meetings](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Meetings/June) 8 | -------------------------------------------------------------------------------- /Meetings/September/SeptemberMeetings.md: -------------------------------------------------------------------------------- 1 | September 3rd Meeting - America's Time 2 | 3 | https://youtu.be/ZlHAYhglz-w 4 | -------------------------------------------------------------------------------- /Misc/README.md: -------------------------------------------------------------------------------- 1 | ### Misc & Fun stuff 2 | 3 | Video that shows the speed of different sorting algorithms: 4 | https://www.youtube.com/watch?v=kPRA0W1kECg&ab_channel=TimoBingmann 5 | Companies that don't require Algorithms knowledge in their interviews: 6 | https://github.com/poteto/hiring-without-whiteboards 7 | Data structure visualization: 8 | https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 9 | Visualization of Queues and Stacks: 10 | https://visualgo.net/en/list 11 | Chrome extension created by [Nick Haralampopoulus](https://github.com/macnick) to remove coding challenges you have already completed from the Microverse coursework: 12 | https://github.com/macnick/filter-challenges -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Useful-Algorithm-links 2 | 3 | This is a simple collection of useful links, to help new people in the group read up on algorithm concepts before the Monday meetings. Most of these resources are provided by Microverse main course. 4 | 5 | ## Welcome to the Microverse Data Structures and Algorithms Study Group! 6 | 7 | - Meetings are held every Monday at 9am UTC 8 | - Everyone is welcome! 9 | 10 | 11 | ### [Data Structures](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Data%20Structures) 12 | 13 | ### [Reference Material](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Reference%20Material) 14 | 15 | ### [Syntax](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Syntax) 16 | 17 | ### [Miscellaneous](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Misc) 18 | 19 | ### [Frequently Asked Questions](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/FAQs) 20 | 21 | ### [Previous Meetings](https://github.com/AymanJabr/Useful-Algorithm-links/tree/main/Meetings) 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Reference Material/README.md: -------------------------------------------------------------------------------- 1 | ### Basics of Big-O notation: 2 | 3 | https://www.inoutcode.com/concepts/big-o/ 4 | https://www.youtube.com/watch?v=__vX2sjlpXU&ab_channel=MichaelSambol 5 | https://www.youtube.com/watch?v=8mBxpDWEKNw&ab_channel=EducationAboutStuff 6 | 7 | 8 | ##### Links with explanations and examples for different O algorithms: 9 | https://www.geeksforgeeks.org/analysis-algorithms-big-o-analysis/ 10 | 11 | https://developerinsider.co/big-o-notation-explained-with-examples/ 12 | 13 | ##### Spatial Hash Grids & Tales from Game Development: 14 | https://www.youtube.com/watch?v=sx4IIQL0x7c 15 | Everything on this channel comes highly recommended! 16 | 17 | 18 | ##### Quadtree Implementation: 19 | https://github.com/connor-brooks/ecosim/blob/e615c48fda0c8107f6a79d28736c2643f73d6211/src/quadtree.c#L141 20 | It is in C99, but the logic should be largely recognizable. 21 | 22 | ### Basics of Recursion: 23 | 24 | http://ruby.bastardsbook.com/chapters/recursion/ 25 | https://www.natashatherobot.com/recursion-factorials-fibonacci-ruby/ 26 | https://www.rubyguides.com/2015/08/ruby-recursion-and-memoization/ 27 | 28 | 29 | ## Dynamic Programming 30 | [Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges(5+ hours video)](https://www.youtube.com/watch?v=oBt53YbR9Kk&list=PLSurF7AG96ezGTQvrLGLGlbP_mEyWia4R&index=13&t=279s) 31 | 32 | ## Reference Links 33 | 34 | Most commonly used algorithms and their complexity: 35 | https://www.bigocheatsheet.com/ 36 | Commonly used Algorithms: 37 | https://www.geeksforgeeks.org/fundamentals-of-algorithms/ 38 | Commonly used Data structures: 39 | https://www.geeksforgeeks.org/data-structures/ 40 | OpenDSA Algorithms and Data structures(a lot of topics on Binary Trees): 41 | https://opendsa-server.cs.vt.edu/ODSA/Books/Everything/html/index.html 42 | Available DOM methods for different languages/frameworks: 43 | https://devdocs.io 44 | 45 | ## Reference Books 46 | 47 | Cracking the Coding Interview 189 Programming Questions and Solutions: https://cin.ufpe.br/~fbma/Crack/Cracking%20the%20Coding%20Interview%20189%20Programming%20Questions%20and%20Solutions.pdf 48 | -------------------------------------------------------------------------------- /Syntax/README.md: -------------------------------------------------------------------------------- 1 | ### Ruby Syntax 2 | 3 | Basics: https://www.tutorialspoint.com/ruby/ruby_syntax.htm 4 | Classes: https://www.tutorialspoint.com/ruby/ruby_classes.htm 5 | Operators: https://www.tutorialspoint.com/ruby/ruby_operators.htm 6 | Conditions: https://www.tutorialspoint.com/ruby/ruby_if_else.htm 7 | Loops: https://www.tutorialspoint.com/ruby/ruby_loops 8 | Methods: https://www.tutorialspoint.com/ruby/ruby_methods.htm 9 | Arrays: https://www.tutorialspoint.com/ruby/ruby_arrays.htm --------------------------------------------------------------------------------