Before I decided to set data science as my career goal, I was a Physics PhD who did a lot of tool operations and optical measurements in semiconducting field. Coding was not a daily work for me. Here I introduced a little about my background to encourage people with a similar background or just as new learners in coding. Before learning data structure, I have known some basic knowledge about Matlab and C. I used Matlab to visualize two-dimensional electronic signal in the experiments. When freshman at Nanjing University, I had a really bad experience of learning C langurange and wasted a lot of time just debuging the synatax. Anyway, I was new to data structure before 2017 spring.

Therefore, there is no hard thing until you leave the comfortable zone. Thanks to Zhijun Yin and Lingjun Fu, I learned a lot from them about where to learn Python. Python has gained great attention in the data science field since 2016 and has a trend over R recently. For people who want to learn some resources about R, I will update it in the blogs later.

# Online Courses

**Estimated time: 6 hours**

The first I would recommend is the Google Python education. It allows you to get familar with Python in a few class and have some hands-on experience. Here you will learn some basic knowledge about string, list, set, dict and re-expressions. The homework is also great to give a try.

**Estimated time: unknown**

Another great resourse is to follow “learn Python the hard way”. I learned about how to print your results using Python. If you are familar with this part, you can skip it.

**Estimated time: one month**

Many thanks to MIT open courses like data structure, probability and quantitative finance, I could dive deep into the algorithm and benefit a lot from that. In this course, the lecturers wrote everything on the blackboard, allowing you to **taking notes** while listening. You can skip some parts if you feel like that you will never use them. I suggested you can follow Leetcode topics below as a reference.

A good tip is to follow some simple cases and write results in each loop or opreation on the while/black board or draft papers. After you understand the simple case many times, you will naturally get what the essence of this algorithm is. Also, please feel free to search any short video in Youtube. The following is my favorite lecturer from India, who gave a very good explaination of each data structure.

**Estimated time: one month**

This is a fatastic book about Python data structure. I highly recommended it for programming beginners. If you learn some data structures in the first time like me, I suggest you to repeat the codes in the book and have a better understanding of each algorithm like sorting in the array or various transverse methods in the tree.

# Leetcode

LeetCode is a platform for preparing technical coding interviews. The following is my suggestions of each topics.

I first get started with linked list suggested by my friend. It was not that difficult. There are some summary or tricks about linked list:

Then followed by binary search and two pointers. And some summary about bit manipulation can be looked up:

Then maybe math problems. If it is related with number theory, I guess you can skip or look at the solutions instead. Stack or hash table for some questions are not hard. However, combining with backtrack, tree, dfs, bfs or dp together, the solutions become more complicated. String and array questions are sort of solved in various methods. You can test yourself after you undestand all the algorithms. DP can be really hard.

Attach is my solutions:

**Linked List**

**Binary Search**

**Two Pointers**

**Bit Manipulation**

**Math**

**Stack**

**Hash Table**

**Backtrack**

**Tree**

**DFS**

**BFS**

**String**

**Array**

**Dynamic Programming**