As we all know, data structure and algorithm has been a big obstacle to learning programming and job hunting, and whether it is a small factory or a large factory, in the written test and interview are in the focus of the investigation of data structure + algorithm.

This article on their own at that time in the study of data structure and algorithm on the road hidden some of the more useful artifact tools and resources to do a wave of combing and summary, I believe that after reading will have you like!

Without further ado, serve!


Data Structure Visualization

As we all know, one of the reasons why it is difficult to master data structures and algorithms is that it is difficult to form a structured picture in our mind, especially when some structures and algorithms are complex, which requires people’s imagination ability.

Data Structure Visualization provides the ability to visualize Data structures and algorithms and develop interactive animation displays to facilitate understanding and understanding of Data structures and algorithms.

At present, the website has included a list, heap, stack, queue, tree, hash table, graph, find, sort, recursion, dynamic programming and a series of major data structures and algorithms are visualized, very easy for beginners to understand and master.

We take sorting algorithm “heap sorting for example”, this website can give a complete visualization process, can say very nice!

And below the animation can also pause play and adjust the size of the frame and animation speed and other parameters, very easy to learn.


Big-O Cheat Sheet

When it comes to learning data structures and algorithms, there is a problem that can not be avoided that is algorithm complexity, including time complexity analysis and space complexity analysis.

Complexity is often expressed using big O notation, such that the average time complexity of bubble sort is O(n^2) and the average time complexity of quicksort is O(nlog(n)).

In addition, there are a series of data structures and algorithms such as heap, stack, queue, linked list, skip list, hash, B-tree, heap sort, selection sort, merge sort and so on. The complexity of the algorithms is best to be able to be understood on the basis of memorization.

Big-o Cheat Sheet compares, compiles, and summarizes common data structures and algorithms in all their complexity, and creates beautiful tables that you can look up, review, and recite at a glance.


VisuAlgo

VisuAlgo also provides the ability to dynamically visualize common data structures and algorithms, and supports Chinese.

One of the nice features of VisuAlgo is that in addition to dynamically demonstrating the algorithm, it can also animate and even interact with the steps, and it includes an explanation of each step, which is really cool.

Here’s an example merge sort animation:


Algorithm Visualizer

Algorithm Visualizer is also an interactive Algorithm Visualizer website that supports Java, JavaScript, and C++.

The content of the website is divided into three parts, the most left can freely choose different data structures and algorithms (currently support including binary tree, graph, sort, find, move back, greedy and many other data structures and algorithms); In the middle part, the algorithm is displayed visually and the console is printed out. The far right is used to show the source code of the algorithm and support the modification to run and see the effect.


Cow online programming

Niuke question bank inside the online programming module for data structure and algorithm practice is very good, there are a lot of questions are sword refers to the offer on the question, these are basic before applying for a job must brush.

In addition to support the submission of multiple programming languages code, there is a good point is to see everyone’s problems, discussion, and even submitted code, and is a Chinese community site, so communication and reference up is quite convenient.


codeforces

Codeforces is also known as CF. It’s a Russian website, and is said to have been originally maintained by a group of open-source college students.

Codeforces has long been known for its game system and scoring system. Everyone in the above with its game system is still more, each user has Rating points, a lot of people are on the above to enjoy the sense of achievement brought by points.

In addition, the above problem set quality is also good, all kinds of difficulty, in which the brush is also a very good choice.


HackerRank

HackerRank is similar to CodeForces in that it also includes database exercises and contests on data structures and algorithms.

In addition, HackerRank dabbles in other related computer technology topics such as programming languages, SQL, databases, and so on.


LeetCode

LeetCode: I don’t think I need to say much.

As the saying goes, the brush algorithm 300 times, will not do the problem will blow. That’s right, even if all the sites mentioned above are not interested in looking, then here LeetCode on the data structure and algorithm of the topic is basically mandatory brush.

Still remember when we used LeetCode, there were only a few hundred questions. Compared to then, the number of questions in LeetCode now seems to have multiplied by many times.

Generally speaking, as the number of LeetCode questions gradually increases, plus more reviews, more summaries and more divergence, you will gradually become more and more familiar with data structures and algorithms. I can’t. There are no shortcuts. The key is to think and practice.


Well-known OJ

In addition to these sites above, there are some reputation has been good university OJ system interested can also take a look.

  • Peking University OJ:

  • Ustc OJ:

  • Hangzhou electric OJ:

  • Harbin institute of OJ


Write in the last

Well, that’s all for today’s sharing. I hope these tools and resources to learn and practice data structures and algorithms can be helpful to you.

In addition, recently spent a lot of effort, the self-use programming learning resources to do a big arrangement.

They are pure liver goods, as listed below.

GitHub github.com/rd2coding/R… Has been included, which also has my collated 6 major programming direction of self-study route + knowledge points, my resume, interview test points, a few hardcore PDF notes, and my programmer life, welcome star.

It is not easy to organize, welcome to support, we will see next!