Git Product home page Git Product logo

liyin2015 / python-coding-interview Goto Github PK

View Code? Open in Web Editor NEW
2.0K 114.0 439.0 68.29 MB

A middle-to-high level open source algorithm book designed with coding interview at heart!

License: Apache License 2.0

Jupyter Notebook 34.89% TeX 65.11%
leetcode algorithms algorithms-and-data-structures python coding-interviews algorithms-explained leetcode-problem-catalog book-series leetcode-algorithms tree

python-coding-interview's Introduction

Hands-on Algorithmic Problem Solving

A 100% open source one-stop coding interview prep book!


DSA · Python · LeetCode · Principles · Problem patterns


   
🔥  Among the top DSA repositories on GitHub


Contributing

The book is written in latex, and all contents except the code is located under Easy-Book folder. Feel free to send me pull requests to contribute contents. Before you start to improve the contents, it would be helpful to know the high-level structure of the book. Read How to contribute? for more details.

All contributors (with decent amount of contributions) will be listed as authors in the project.


About this book

book_structure

In short, this is a middle-to-high level algorithm book designed with cracking coding interviews at hearts. It offers a one-stop coding interview prep experience. The structure of the book:

  • Preparation: introduce the global picture of algorithmic problem solving and coding interviews, learn abstract data structures and highly related and useful math such as recurrence relation, and hands-on Python practice by relating the abstract data structures to Python data structures. Coding is not just code after all.,
  • Principles: we organize the design and principle here so that readers can use them as guidance while not seeking for peculiar algorithm for solving a problem.
  • Classical algorithms: We enhance our algorithm database via learning how to apply the core principles to a variety of classical problems. A database that we can quickly relate to when seeing problems.
  • Coding interview problem patterns: We close our book with the analyzing and categorizing problems by patterns. We address classical and best solutions for each problem pattern.

Besides trying to make the content easy to follow, here summarizes the uniqueness of this book: (1) it offers Python source code that is tailored to be simple so that it would be natural for you to use in interviews (2) all the exercises and examples are from Leetcode problems so that you get to practise online (3) Classical algorithms are explained with design principles. No algorithm is magic. (Check out advanced graph algorithms as an example) (4) problem patterns to help you tackle coding interview questions topic by topic.


How did I come up with this book?

Preparing for the coding interview is not easy! Cracking the coding interview? Nearly impossible for most of us! Luck does play a role in the outcome. So, let's just treat it as a learning process and have some fun!

Computer Science is really not just computer science. It is a combination of all fields; our normal interview problems fall into the enumerative combinatorics and our computer vision mostly consists of Linear Algebra. What really matters is our passion to learn and the ability to apply this knowledge to solve real-life problems.

There are plenty of books out there focusing on either teaching algorithmic knowledge (Introduction to Algorithms, Algorithmic Problem Solving, etc) or introducing the interview process and solving interview problems(Cracking the Coding Interview, Coding Interview Questions, etc), but none of these books truly combine the two. This is a book designed to make up this role in the categorization. Principle, Pattern, and Leetcode Problems make up the core of this book.

This is NOT a book that provides hiring statistics for each company or gives the reader quick tricks in order to pass a few coding interviews. Its purpose is to show you the beauty of algorithmic problem solving in the hope that you will be more passionate and confident about software engineering; the interview questions just set up a playground where we strengthen what we learn.


For Readers

The whole book is compiled as pdf.

For readers, you can read the book as a whole or read chapters selectively following the below links.

Table of Contents


Warm Up: Abstract Data Structures and Tools

Get Started: Programming and Python Data Structures

Core Principles: Algorithm Design and Analysis

Advanced Algorithms

Problem Patterns

  • Dynamic Programming Questions (15%)
  • Array Questions (15%)
  • Linked List, Stack, Queue, and Heap Questions (12%)
  • String Questions (15%)
  • Tree Questions (10%)
  • Graph Questions (15%)

Note: everything is still in progress, so use it with caution.


Referring Books and Materials

  • Skiena, Steven S. The algorithm design manual: Text. Vol. 1. Springer Science & Business Media, 1998.

  • T. H. Cormen, Introduction to algorithms, MIT press, 2009.

  • Manber, Udi. Introduction to algorithms: a creative approach. Addison-Wesley Longman Publishing Co., Inc., 1989.

  • Kleinberg, Jon, and Eva Tardos. Algorithm design. Pearson Education India, 2006.

  • Russell, Stuart J., and Peter Norvig. Artificial intelligence: a modern approach. Malaysia; Pearson Education Limited,, 2016. (Best book ever in explaining searching problem-solving, differentiate tree-search and graph-search)

  • D. M. Beazley, Python essential reference, Addison-Wesley Professional,2009.

  • S. Halim and F. Halim, Competitive Programming 3, Lulu Independent Publish, 2013.

  • B. Slatkin, Effective Python: 59 Specific Ways to Write Better Python,Pearson Education, 2015.

  • H. hua jiang, “Leetcode blogs,” https://zxi.mytechroad.com/blog/category, 2018, [Online; accessed 19-July-2018].

  • B. Baka, “Python data structures and algorithms: Improve application performance with graphs, stacks, and queues,” 2017.

  • “Competitive Programming,”https://cp-algorithms.com/, 2019, [Online; accessed 19-July-2018].

  • “cs princeton,”https://aofa.cs.princeton.edu/60trees/, 2019, [Online; accessed 19-July-2018]

  • https://stanford-cs161.github.io/winter2021/schedule/


Tools


Mocking Interviews

Practice is important. Schedule some mocking interviews with interviewing.io. If you cant manage to register, you can join us in discord server and ask peers for practice interview.


Community

Join me on discord server: https://discord.gg/ZXnSag7fMP, for a supportive community


Feedback

If you have ideas to improve the book, about formatting, more contents, or correct the errors, do not hesitate to let me know.

To cite this content, please use:


```bibtex @misc{handsondsa, author = {Li Yin}, title = {Hands-on Algorithmic Problem Solving}, howpublished = {\url{https://github.com/liyin2015/python-coding-interview/}}, year = {2021} } ```

python-coding-interview's People

Contributors

amitrajitbose avatar deepakps22 avatar gregbo avatar liyin2015 avatar maya-h avatar unixisking avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-coding-interview's Issues

More data structures

Any plans to add Trees, Graphs in the datastructures.ipynb? Could you give timeline? Are you open to PR's?

Great book!

Keep up the good work! I couldn't find any comparable resource anywhere like this book. Despite it is still under development and some parts are missing, it is very well organized and have common pattern and tricks to solve all question types.

Binary Search wrong description

Decrease and Conquer - Binary Search
• If it is smaller than the target, move to the left half by setting the right
pointer to the position right before the middle position, r = m − 1.
• If it is larger than the target, move to the right half by setting the left
pointer to the position right after the middle position, l = m + 1.

"0.1.3 All Paths" example in the backtracking chapter

Thank you for the hard work.

I have trouble understanding the "all paths" example in the backtracking chapter.

Unlike the in the permutations and combinations example, the arguments in this function is undocumented, and why the graph can be represented in the array is not explained.

image

Unable to download the whole book PDF

Hey I first want to say this book you put together looks like its going to be super useful and helpful and I want to thank you for your hard work creating it. When I click on the link to download the whole book as a pdf I am getting an error saying "unable to render rich display Invalid PDF". I am not sure why this error is occurring but I thought I would let you know. Here is a screenshot of the error.
thanks again
Screen Shot 2022-12-05 at 6 56 52 PM

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.