/DummyLovesAlgorithms

Recording my algorithm learning path as a dummy.

Primary LanguageJava

Dummy Loves Algorithms and Data Structures

Description

This is a repository where I keep all interesting algorithms and data structures I came across either in work or learning.

Lack of a well-trained background in computer science always pushed me back in taking time to catch up in algorithms and data structures. But that is indeed the area where a programmer shines and aligns the thinking process with his beloved machine. Behind the general software engineering principles, it's the carefully designed algorithms and data structures in vaiours code snippets that make the overall product performant and wonderful.

Requirements

Java 8 is required so as to support the functional interface and Lambda expressions used.

How

Each package contains an interesting algorithmic question with solution provided.

  • Run it as a Java application in a common IDE like Eclipse (make sure Java 8 is supported). This provides flexibility to modify code.
  • Key function calls will be provided with roughly estimated running time so as to cross check with the indicated time complexity.

List of algorithmic questions

Background

This all started with a day when I accidentally picked a book my university professor passed me when I graduated.

Data Structures & Algorithm Analysis in Java by Weiss, Mark Allen (ISBN 0-201-35754-2). It's a textbook for first-year graduate student in computer science so it should be a good starting point.

Well eventually it turned out that reading book is rather slow and solving problems can be more challenging and rewarding. Hence eventually this repository became a place where I keep my practice and notes. Each question comes with a detailed explanation in code comments. When I do coding practice on LintCode, LeetCode or Geeks For Geeks and encounter certain typical and interesting problems, I will add them to the list here.

Owners

Author: Ruifeng Ma

Email: mrfflyer@gmail.com

Contributing

  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write your change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github