Everyone knows that data structures and algorithms have always been a big obstacle to learning programming and job hunting, and whether it is a large or small factory, the written test and interview are focused on data structure + algorithm questions.
This article will sort out and summarize some of the more useful artifact tool websites and resources that I had privately hidden on the road of learning data structures and algorithms at the time. I believe you will like it after reading it!
Not much to say, serve!
Data Structure Visualization
We all know that one of the reasons that data structures and algorithms are difficult to master is that it is difficult to visually form a structured picture in the mind, especially when some structures and algorithms are more complex, there are certain requirements for people's imagination.
The Data Structure Visualization website provides a function to visualize data structures and algorithms, and develops interactive animation displays to facilitate understanding and mastering of data structures + algorithms.
At present, the website has visually displayed a series of main data structures and algorithms such as lists, heaps, stacks, queues, trees, hash tables, graphs, search, sorting, recursion, dynamic programming, etc., which is very convenient for beginners. Understand and master.
Let's take the "heap sorting" in the sorting algorithm as an example. This website can give a complete visualization process, which can be said to be very nice!
Moreover, you can pause the playback and adjust some parameters such as frame size and animation speed by yourself under the animation, which is very easy to learn.
Big-O Cheat Sheet
When it comes to data structure and algorithm learning, one problem that cannot be avoided is algorithm complexity, including time complexity analysis and space complexity analysis.
Complexity is usually represented by big O notation. For example, the average time complexity of bubble sort is O(n^2), while the average time complexity of quick sort is O(nlog(n)).
In addition, there are also a series of data structures and algorithms such as heap, stack, queue, linked list, jump list, hash, B-Tree, heap sort, selection sort, merge sort, etc. The complexity of the data structure and algorithm is best to be able to It requires memorization based on understanding.
The website Big-O Cheat Sheet compares, organizes, summarizes common data structures and algorithms, and prepares exquisite tables, which are available for reference, review, and recitation, which is clear and clear at a glance.
VisuAlgo
VisuAlgo also provides dynamic visualization of common data structures and algorithms, and supports Chinese.
A good feature of VisuAlgo is that in addition to dynamically demonstrating the algorithm, it can also perform step-by-step animation demonstrations and even interactions, and contains an explanation of each step, which is really cool.
Here is an example of merge sort animation to see the effect:
Algorithm Visualizer
Algorithm Visualizer is also an interactive algorithm visualization website, and supports mainstream programming languages such as Java, JavaScript, and C++.
The content of the website is divided into three parts. On the left side, you can freely choose different data structures and algorithms (currently supports many data structures and algorithms including binary trees, graphs, sorting, search, dynamics, greedy, etc.); the middle part is for algorithms Visual display and print output of the console; the far right is used to display the source code of the algorithm and support modification and operation and see the effect.
Niuke online programming
The online programming module in the Niuke question bank is very good for data structure and algorithm exercises. There are many questions in the sword finger offer questions, which are basically must be brushed before applying for a job.
In addition to supporting the submission of codes in multiple programming languages, another good point is that you can see your solution, discussion, and even the submitted code. It is also a Chinese community website, so it is very convenient for communication and reference. of.
codeforces
The codeforces alias is CF, and you can see something from the name. It is a Russian website, and it is said that it was first maintained by a group of college students with a spirit of open source.
The competition system and scoring system of codeforces have always been well known. Everyone uses its game system on it quite a lot, and every user has Rating points, and many people enjoy the sense of accomplishment brought by the top points on it.
In addition, the quality of the above question set is also good, with various difficulties, and it is also a very good choice to brush the questions in it.
HackerRank
HackerRank is actually a bit similar to the codeforces just introduced above. The main content also includes exercises and competitions for data structures and algorithmic questions.
In addition, HackerRank has been involved in other related computer technology topics, such as programming languages, SQL, databases, and so on.
LeetCode
I don't think I need to say more about LeetCode.
As the saying goes, I am familiar with the algorithm 300 times, even if I can't do a problem, I will blow it. That's right, even if all the websites mentioned above are not interested and don't want to watch, then the data structure and algorithm topics on LeetCode are basically necessary.
I still remember that when we used LeetCode, there were only a few hundred questions. The amount of LeetCode questions now has doubled compared to then.
Generally speaking, after the amount of LeetCode questions slowly rises, plus more reviews, more summaries, and more divergence, slowly you will become more and more knowledgeable about the data structure and algorithm. No way, there is no shortcut to this stuff, thinking and practicing is the key.
Well-known OJ
In addition to the above websites, there are also some college OJ systems that have a good reputation. You can also take a look at them if you are interested.
Peking University OJ:
University of Science and Technology of China OJ:
Hangzhou Electric OJ:
Harbin Institute of Technology OJ
Write at the end
Okay, that's all for today's sharing. I hope these tools and resources for learning and practicing data structures + algorithms can be helpful to everyone.
In addition, I have recently spent a lot of effort to organize the programming learning resources for my own use.
They are all pure liver products, the catalog is as follows.
The content on GitHub https://github.com/rd2coding/Road2Coding has been included, and there are also self-study routes for the 6 major programming directions that , , my resume, , Several hardcore pdf notes , and My programmer life , welcome star.
It is not easy to organize, welcome support, see you in the next article!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。