Skip to content

Latest commit

 

History

History
44 lines (24 loc) · 2.29 KB

README.md

File metadata and controls

44 lines (24 loc) · 2.29 KB

About the algorithms

In my experience, I am not good at the solving the algorithm problems. But I have never given up. And here are some findings I can share:

Learning the concepts from the university courses

You see it you get it and remember it. It likes the design patterns in the object-pritencted programming. You are better know as many as possible and make sure they are related to your domain. UCB open course is a good resource for knowing the algorithms. What I mean here is that you need to extend your knowledge on algorithms first. It is a program or course and it is not related to the experience.

We do not need to learn all from the university courses. Be sure you remember all the concepts and the ideas. And I believe we combine the data structures and the algorithms together. It is a good way to increase the efficiency of learning.

Source from Author

Learning the algorithms from the experience

In my opinion, we should know what algorithm technique that we are using when we are trying to solve the programming issues. This is more important than solving the algorithm problem itself. And as more problems you have solved, you will know more techniques of algorithms. And you will know how to apply them to your problems. I believe this is the reason I failed to solve the same problems in the past.

The improvement of solving the algorithm problems

We should know the what technique we have used to solve the problems. For example, if we are working on solving find specific element on a Array. Most of time, "we use linear search technique(algorithm)" keep it in mind rather than we use for here to traverse all the elements. This is the key point to improve the efficiency of solving the algorithm problems.

Know clearly of the edge cases

This is really helpful while you are trying solve the problems. There are many examples like:

range(1,4)
range(5,1,-1)
for i in (0..n){

}

for i in (0..n-1).rev(){}

for i in (0..=n).rev(){}

It is really helpful to know these programming skills clearly. What the different between them and how to use them to solve the problems.