This repository is a part of HacktoberFest-an event organised by DigitalOcean. You are requested to create your profile using the above link to be a part of it.
This repository contains examples of various algorithms written on different programming languages...
(https://github.com/divyhshah)
- Have a look at open issues. They contain the list of algorithms/DS we plan to be implemented. Pick an unassigned issue.
 - You can also create a new issue for an algorithm that is not in the list.
 - Make sure you are assigned for the issue.
 - Fork the repo!
 - Clone the forked repository to local system.
 - Create your feature branch: 
git checkout -b my-new-feature - Be sure to not include any compiled binaries in the patch.
 - Commit your changes: 
git commit -am 'Add some feature'. Go through Commit Messages guidelines - Push to the branch: 
git push origin my-new-featureWhile sending a PR make sure you follow one issue per PR rule. - Submit a pull request 😄
 
See Extended Contributing Guidelines
| Data Structure | C | CPP | Java | Python | 
|---|---|---|---|---|
| Dynamic array | ||||
| Stack | ||||
| Singly Linked List | ||||
| Double Linked List | ||||
| Circular Linked List | ||||
| Hash Tables | ||||
| Heap | ||||
| Fibonacci Heaps | ||||
| Disjoints Sets | ||||
| Adjacency matrix | ||||
| Queue | ||||
| Priority Queue | 
| Maths | C | CPP | Java | Python | 
|---|---|---|---|---|
| Euclidean GCD | ||||
| Fibonacci series | ||||
| Pallindrome number | ||||
| Perfect number | ||||
| Magic number | ||||
| Polite number | ||||
| Sieve of Eratosthenes | ||||
| Modular exponentiation | 
| Searching and Sorting | C | CPP | Java | Python | 
|---|---|---|---|---|
| QuickSort | ||||
| Merge Sort | ||||
| Insertion Sort | ||||
| Counting Sort | ||||
| Radix Sort | ||||
| Bubble Sort | ||||
| Heap Sort | ||||
| Selection Sort | ||||
| Linear Search | ||||
| Binary Search | 
| Tree traversal | C | CPP | Java | Python | 
|---|---|---|---|---|
| Pre-Order Traversal | ||||
| Post-Order Traversal | ||||
| In-Order Traversal | ||||
| Binary Search Tree | ||||
| Height of the Tree | ||||
| Depth of the Tree | ||||
| AVL Tree | ||||
| Spanning Tree | ||||
| Segment Tree | ||||
| Fenwick Tree | ||||
| Trie | 
| Graph Traversal | C | CPP | Java | Python | 
|---|---|---|---|---|
| Breadth First Search | ||||
| Depth First Search | ||||
| Topological Sort | ||||
| Kruskals Algorithms | ||||
| Prim's Algorithms | ||||
| Belmon Ford Algorithms | ||||
| Floyd-Warshall Algorithm | ||||
| Dijkstra's Algorithm | 
| Dynamic Programming | C | CPP | Java | Python | 
|---|---|---|---|---|
| Edit distance | ||||
| Fractional Knapsack | ||||
| Longest Increasing Sequence | ||||
| Kadane's Algorithms | 
- LeetCode
 - InterviewBit
 - Codility
 - HackerRank
 - Project Euler
 - Spoj
 - Google Code Jam practice problems
 - HackerEarth
 - Top Coder
 - CodeChef
 - Codewars
 - CodeSignal
 - CodeKata
 - Firecode
 
- Data Structures
 - Algorithms
 
- Competitive Programming 3 - Steven Halim & Felix Halim
 - Cracking The Coding Interview - Gayle Laakmann McDowell
 - Cracking The PM Interview - Gayle Laakmann McDowell & Jackie Bavaro
 - Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein
 
- GeeksForGeeks – A CS portal for geeks
 - Learneroo – Algorithms
 - Top Coder tutorials
 - Infoarena training path (RO)
 - Steven & Felix Halim – Increasing the Lower Bound of Programming Contests (UVA Online Judge)
 
- MIT – Hacking a Google Interview
 - Coderust 2.0 ($$)
 - Interview Cake ($$$) [review]
 - How to Ace the Software Engineering Interview ($$)
 - Grokking the System Design Interview ($$)
 
- Coding for Interviews
 - Career Cup
 - HiredInTech
 - Codela
 - TestDome
 - FreeCodeCamp "Learn to code and help nonprofits"
 - Dynamic Programming Practice Problems
 
- How to: Work at Google – Candidate Coaching Session for Technical Interviewing [45:45]
 - Gayle McDowell – Cracking the Coding Interview [1:14:24]
 - Gayle McDowell - Cracking the Coding Interview (examples) [9:05]
 - Google Recruiters Share Technical Interview Tips [31:06]
 - Google Recruiters Share Non-Technical Interview Tips [28:23]
 - Moishe Lettvin – What I Learned Doing 250 Interviews at Google [1:00:24]
 - Sean Lee – How to Get a Job at the Big 4 [42:34]
 - Ladies Storm Hackathons – Interview Prep Round 1: Strings, Arrays, Linked Lists [1:12:39]
 - Randall Koutnik – Rethinking the Developer Career Path [25:03]
 
- donnemartin/system-design-primer
 - Grokking the System Design Interview
- This is a paid course but has several free previews such as Designing Instagram
 
 - binhnguyennus/awesome-scalability
 - Raph Levien – Rope Science
 - Architecture of Open Source Applications
 - How should I prepare system design questions for Google/Facebook interview?
 - Jeff Atwood – How Good an Estimator Are You?
 - 0xAX/linux-insides
 
| Language | Steps | 
|---|---|
| Python | python [filename.py]  | 
| C | gcc [filename.c]  | 
| CPP | g++ [filename.cpp]  | 
| Java | javac [filename.java]  | 
| Golang | go build [filename.go]  | 
Feel free to contact us at our E-mail, we'd be happy to help! Check out our app called footsteps which helps you keep a log of your online learning and inspire others to follow it!
Only project maintainers should merge a PR. Other members can add their reviews to a PR but the merging should be done by only a project maintainer.
