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...
Contributors
(https://github.com/divyhshah)
Contributing
- 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-feature
While sending a PR make sure you follow one issue per PR rule. - Submit a pull request
๐
See Extended Contributing Guidelines
Important Data Structures
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 |
Important Algorithms
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 |
Curated resources (Footsteps) by FnPlus Community
Coding Practices:
- LeetCode
- InterviewBit
- Codility
- HackerRank
- Project Euler
- Spoj
- Google Code Jam practice problems
- HackerEarth
- Top Coder
- CodeChef
- Codewars
- CodeSignal
- CodeKata
- Firecode
Video Lectures:
- Data Structures
- Algorithms
Interview Books:
- 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
Guides:
- 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)
Courses:
- MIT โ Hacking a Google Interview
- Coderust 2.0 ($$)
- Interview Cake ($$$) [review]
- How to Ace the Software Engineering Interview ($$)
- Grokking the System Design Interview ($$)
Sites:
- Coding for Interviews
- Career Cup
- HiredInTech
- Codela
- TestDome
- FreeCodeCamp "Learn to code and help nonprofits"
- Dynamic Programming Practice Problems
Videos:
- 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]
System Design:
- 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
Computer Science News:
Sample Run:
Language | Steps |
---|---|
Python | python [filename.py] |
C | gcc [filename.c] |
CPP | g++ [filename.cpp] |
Java | javac [filename.java] |
Golang | go build [filename.go] |
Support:
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!
Notes:
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.