From January 2015, she started to practice leetcode questions; she trains herself to stay focus, develops "muscle" memory when she practices those questions one by one.
2015年初, Julia开始参与做Leetcode, 开通自己第一个博客. 刷Leet code的题目, 她看了很多的代码, 每个人那学一点, 也开通Github, 发表自己的代码, 尝试写自己的一些体会.
She learns from her favorite sports – tennis, 10,000 serves practice builds up good memory for a great serve. Just keep going.
Hard work beats talent when talent fails to work hard.
I came cross this TED talk about failures, Rethinking failure: Barbara Corcoran. Here is the link. I like to spend some time this year to study Barbara corcoran, and hopefully I can learn something basics from real estate, how she made good career in the industry.
I came cross this statement, "Microsoft and Google hire well, and Amazon and Facebook fire well" in the article, and I like to do some short research related to the topic. Here is the article for me to read and study 10 to 20 minutes.
It is time for me to read the article called top 10 traits, here is the link.
My most favorite top three traits
1. See failures as opportunities - ranking 10 out of 10
I failed to research the real estate market in British Columbia from 2010 to 2018, and I ended up wasting a lot of money on my vacation, clothing, shoes, car maintenance etc. I felt so disappointed to myself.
I recalled the test I prepared for Canada citizenship in 2014, I did prepare it in last week; Compared to the sister in the church, she prepared much early, attended two session 3 hours course in Burnaby library, and also shared her experience with me.
I have to overcome this procrastination problem. I pay the big price for the bad habit, since I do not build good habit at the very beginning.
2. Look for a mentor - ranking 9 out of 10
I just could not believe that I chose to have a mentor to help me advance my skills in algorithm and data structure problem solving in June, 2018.
It is time for me to study more about people, money, society, and market. I have been in Canada over 9 years, I could not make big progress in wealth making. It is never too late to study about money. I chose the topic "Is cash still king?". Here is the link.
It is so surprising to learn that recession is the best time to invest money on the stock market. I did sell everything in 2009, fifteen year lowest point with my limited IRS mutual fund and stock, and then closed two accounts. I did the opposite.
Ford 1 11
Citi 9 74
Disney 13 103
BofA 2.5 32
Amazon 34 1500
Nike 12 66
It is a good topic to do some research how to evaluate my Leetcode contest weekly performance. I noticed the first time yesterday after weekly contest 108 the ranking and 5 minutes for each failed submission. I know that it is also very important for me to start the topic, I like to spend more time on ideas thinking in the contest instead of just making one algorithm passing online judge.
What to analyze?
I like to analyze so many things, yesterday the first time I will check player with ranking score 14, what are those global ranking range, how many algorithms they solved already.
I like to list five players scoring 14, and I like to choose them as my role models.
I like to list five players scoring 9, same score, but much more hard working than me. I understand that hard working is one thing, scoring high is another talent, I need to pay attention to, I like to learn how to improve.
Here is the blog I like to read from a player who solved 4 algorithms in the contest.
I like to look up some profiles and see how they advance their rankings.
Here is one in top 100. A player can change his major from medical to computer science. It is an interesting story.
Very well written blog, a player with full score on weekly contest 108. The blog is here. The leetcode profile is here.
It is the show I like to watch again. Today I spent over one hour to watch the show, it was so relaxing and I had such great time. I think that in order to improve my performance on algorithm and data structure problem solving, first thing I have to do is to learn to relax and have some entertainment on netflix.com.
I like to plan to spend 10 hours time to watch the show. One reason I like to watch the show is that I used to live in Florida over 14 years. I miss Florida, I have three day vacation, I checked the airline ticket $400 us dollars.
Last time I watched Jane virgin is almost two years ago. I need to watch more shows to catch up ideas about fashion, good conversation and everything.
It is now 9:28 PM. One hour 28 minutes after the weekly contest, I was more busy after the contest. The contest lasts 90 minutes, and then I spent another 90 minutes to study discuss. It is most busy time in the week and I enjoyed playing and also learning.
Here is the code I wrote in the contest. It took me one hour and five submissions in order to pass online judge.
I learned one optimal solution after the contest. Here is the link. I like to write a C# solution as well.
It is another weekly contest, I did prepare better this time. I ate an orange before the contest to make sure that I will not feel headache, since I played some tennis before the contest. I like to perform better this time.
Here is my performance. I solved two algorithms in the contest. Second algorithm is not too hard, but I had so many issues and needed to work with online judge four times until I can pass the online judge.
After the contest
I learned an optimal solution and dynamic programming solution for question II - 930. Binary subarray with Sum. I will write those two solutions in next one hour or two.
Next time in the contest, I should think about the elegant solution first. In theory, there is an elegant solution for each algorithm, it takes less than 10 minutes. I need to think about 10 minutes carefully, this way I can finish three algorithms and then advance my ranking.
I checked player's the ranking of contest with score 14, which is in the range from 80 to 8,000, so my global ranking of contest 13, 000, the performance of contest matches my ability. I only solved 270 algorithms, I did see players solved 800 algorithms with score 14.
It is a good research topic I can look into 20 minutes before the contest starts at 6:30 PM. How to advance my contest ranking? I had the lesson last week, I did not choose to work on an easy level algorithm, but I tried to work on a hard level algorithm almost one hour but failed to score anything. That brings my attention to do this research.
Right now my ranking is around 13,000, and I like to advance to top 10,000 first. I like to see how long it takes me to advance 3,000 in the ranking. I like to try the easy level algorithm first, since the hard level has complicated edge cases, it is hard to pass all test cases in the contest.
Also I like to work on my reading skills, specifically I like to learn IELTS reading skills and writing skills both. It is much better for me to work on two things in the same time.
I do not know how to measure anxiety attacks & depression, but I know that it is a serious problem if we do not learn how to prevent and handle it properly. I think that most important is to find something really enjoyable to do every day, live in the present.
Continue to learn
I also like to watch the video by valuetainment, here is the link.
I did remember that this August my sister visited the city of Vancouver, she paid for the ticket to invite me to show fly over Canada in the Canada place. I was filled with so many emotions, I was so afraid one time on the show. After the show, I never felt so relax first time in last three months.
As a software programmer, I I solved 88 algorithms with 321 submissions from August 31 to Oct. 26, 2018. I like to write down my mark, and also I like to analyze my problem solving skill based on the facts that I can solve 88 algorithms in less than two months.
It is so important for me to keep working hard. I got the advice to work on easy level algorithms first. I have no excuse that I cannot solve easy level algorithms. So I just continued to work hard, solve those algorithms as quick as possible.
Now I have to come out ideas how to solve medium level algorithms and how I should persuade myself to solve those hundreds of medium level algorithms. I like to be competitive player, and also I like to hold high standards as a software programmer. I like to push myself hard, and also like to challenge myself to take myself outside of comfortable zone.
It is time for me to expand my knowledge and search for solutions to my existing problems. I need to find tips how to find nice ideas, good things to do. One is to watch this video called 16 time wasters of entrepreneurs. Here is the link.
It is time for me to review my expenses, and I was so surprised that I spent so much on a China vacation in 2012 spring festival. I did try to analyze what was happening, and then I have to learn how to analyze my consumer behavior, since I may make similar mistakes in other activities. I like to do some research about money, how I have to catch up and get smart on those trips.
It is an easy level linked list algorithm. I had good time to learn from my submissions and then finally after hour long work I wrote a solution to pass online judge. I understand that it is so important for me to learn and the online judge is such a good tool for me to test my thinking process. I do like to fix those edge cases, and also very am pleased to go ahead to make it work.
Here is the link I shared my practice on Leetcode.com.
It is an easy level heap algorithm. I thought that I can write a solution using minimum heap quickly, but it took longer than one hour. I submitted more than four times and then finally I made it work.
I like to write down very good experience to learn to design a minimum heap using SortedDictionary again, this time I also learned that time out issue, since I chose to count of minimum heap using SortedDictionary.Values.Count instead of keeping tracking of it by an variable actualSize.
What I did surprisingly is how to fix the timeout issue? Do SortedDictionary have issue with First() api related to time complexity?
I choose a good fight
One thing I like to do is to go for those easy level algorithms first, and also I like to show my problem solving skills.
First, I reviewed my past practice and I learned using SortedDictionary to write a minimum heap. I had rich experience to work on coding, since I have solved over 260 algorithms, I had experience to work on Merge k sorted lists, and I did study all C# submissions on Leetcode discuss.
Even though I have a lot of experience, but I still have to discipline myself again. I missed use case actualSize < size related to addNumberToHeap.
Most challenging thing is to solve timeout issue. I believe that SortedDictionary is based on binary tree to maintain the order, and I pinpointed the issue is related to check minimum heap's size. I decided to give it a try to track the size of heap by myself.
All those cases are really part of good workout for me to train myself, prepare myself for future challenge and exciting project to work.
It is time for me to do some case study, so I have time to correct my behavior, and learn how to enjoy good life with less expenses. I like to do a case study of my China trip 2012, a vacation trip.
I like to figure out what kind of person I am in terms of consumer and also an investor. Do I need to learn some basics again? I have a friend who chose to purchase a home in the city of Surrey over five years ago, but she did not take vacation every year to China last 8 years, only one trip to China. And she did not choose to purchase a car and try to save the money, now the home price is more than double.
It is time for me to review what I did, I took China vacation every year from 2012 to 2018. I enjoyed life so much now I have to work on the problem how I can afford a home in Canada. It is time for me to learn how to make money, work hard.
Airline ticket price
I need to spend time to do research about ticket price. The market is going up and down. April is best time to travel, in terms of weather and cost of airline ticket. I need to get smart on planning ahead, budget a economical trip.
First, I was surprised that I chose to take vacation in Chinese spring festival, the airline ticket costs me $1,000 Canada dollar in 2012. I did not know in 2012, I can get the ticket price around $500 dollars to travel to China in April since it is slow season in April.
It is never too late how to save money and make money. I reserve every night of October for me to learn how to save money, and make money. I will do a few case study and show that I can save thousands if I learn at the very beginning.
2. Don't be a hater
7. Secret account
8. First class
9. Comp plan
10. End of the cash
12. Study smart invest
13. Play your game
15. befriend $ maker
16. Diversification is for absolute sissies
19. Strategic partnership
20. Big check syndrome
It is time for me to work on one easy level algorithm, so I can have 1000 submissions. I am so excited to work on my 1000th submission in short future.
What it takes
It takes a lot of hard work, time and also wisdom to reach 1000 submissions. It is much hard to compare to get a gold medal on Hackerrank.com, and also any course work I had in mathematics major in Florida Atlantic University, all courses work together in my bachelor degree and master degree, include Ph.D. study.
I also have to learn so many things in order to make a successful submission sometimes.
The Leetcode community is different from Hackerrank, some of us are ready to share just after the contest. The discuss ratio compared to all submissions is not that high, for example, over 300,000 submissions in 39 Sudoku solver only less than 400 discuss.
This is also time for me to learn how to write code; I am so glad to read ideas and then write code for various ideas.
I learn from my own experience, last month I worked on easy level algorithm binary watch, I felt nervous as I did in the phone screen. But once I started to read various ideas, I felt so relax and enjoyable to work on those ideas. I learn to deal with my own emotions, I have to push myself hard to think independently more often, before I read the discuss. I will have to get used to figure out things by myself. Hopefully next 1000 submissions I can train myself to overcome this nervousness issue.
Those 1000 submissions also help me to have the chance to be get two phone screens and one onsite interview this year. Without those encouragements from Amazon and Facebook, a few of local companies, I will not be smart enough to work on so many submissions. I also had thanks to my ex-coach, I have to stay humble and work on those easy level algorithms first, without those 200 easy level algorithms practice, I will not have chance to reach 1000 submission mark.
My personality is kind of over confident sometimes, and sometimes low on confidence. I have to learn how to make good judgement where I am in terms of confidence level.
I have to stay humble, start from easy level, and work on the foundation skills. I also overcome my shyness, first time in those easy level practice, I decided to share my practice on Leetcode discuss. I started from August 11, now it is two months experience with over 100 sharing 20 reputations.
Also through those easy level algorithm practice, I started again to play Leetcode weekly contest, I have played over 8 contest last two months. It is so good journey for last two months. I read one blog I wrote in August 31, at that time, I solved 177 algorithm with 679 submission. Based on the facts written in the blog two month ago, I can easily find out that I solved 88 algorithms with 321 submissions from August 31 to Oct. 26, 2018.
It is time for me to write something called over 9000 submissions. I chose to follow my ex-coach's advice, and then I work on easy level algorithms first. I chose to work on two easy level back-tracking algorithms, I found one most elegant solution. And then I studied the player, over 9000 submissions.
I read the number, and then I talked to myself. I am gambling to try my luck to compete with those hard working players. With the experience of 900 submissions, how can I compete with people with over 9000 submissions.
Can I work on 500 more submission this year?
A player can work on 9840 submissions on Leetcode.com, and also he managed to complete 760/921 algorithm, his ranking on contest is 1113/72819. Leetcode ranking is 366. He also completed 86 mock interviews, with overall percentile 72%.
I like to compare to my data. I solved 265 algorithm, contest ranking is after 13,000. The overall ranking is after 20,000.
I need to find out ways to have more submissions on Leetcode.com. One thing I can think about is to work on those 200 easy level algorithms again, but this time I will submit different ideas for those algorithms. So maybe I can make more than 600 submission, each algorithm 3 submissions more.
I also can try to work on medium level algorithm or hard level algorithms now. There is nothing I can be afraid of. The idea is to shorten the time to work on medium level or hard level algorithm to 20 to 30 minutes, and go back to work on easy level algorithms and learn better on those algorithms.
Easy level algorithm is really a good playground for me to learn. There are more players to share the experience, more ideas for me to learn and practice. And also I can really build up confidence to write code every day, learn how to overcome the stress or intimidation for coming out the idea to solve the problem by myself.
Oct. 29, 2018
Another idea is to find one good sharing post for hard or medium level algorithms, the thing I like to focus on is to imitate the role model and write my C# solution. This may be a good idea for me to try, at least I can find 20 or 30 players with good writing skills and patience.
Nov. 5, 2018
I also like to find out how I can find time and get some tips to work on more algorithms. One idea is to study kid's playground, how kids learn to play in the playground. Since Leetcode actually can be treated as a playground for so many players.
I believe that medium level or hard algorithms are good playground for me. I do not need to stick on one hard level algorithm. As long as I keep going, I will build up some skills through those practice.
One idea is to go over same category algorithms together, work on together. One idea is to work on the algorithm 8 hours a time, and see how I can improve my performance, what problems I have in those 8 hours.
Last time I did work on 8 hours for linked list algorithms. I found out that I really felt so exhausted after 4 hours. I need to take breaks. Another thing I found out is that I did not push myself hard to think about constraint, and then play with the linked list and then come out by myself.
The biggest problem is that I do not want to push myself to think independently.
It was so surprising that I found one algorithm called binary watch to work on. I found out that it was most rewarding experience to work on more than five practice in a day. I really enjoyed the learning. I also think that most efficient way to train myself is to write as many ideas as possible. There are more than 200 discuss, I should write as many ideas based on those sharing.
Algorithm and data structure
I think that most efficient way is to write code every day. Specially for an algorithm like binary watch, it is such great tool for me to train myself.
I have chance to work on bit manipulation, recursive function, and learn a few things through C# coding.
Oct. 29, 2018
Avoid long hours to work on one algorithm
I think that it is much better to work on easy level algorithm. If there is something hard to solve, I should work on easy ones first. Through those easy ones, I may find good ideas through Leetcode discuss. I also may learn different ways to solve the problem.
Make Leetcode weekly contest part of training. Take it easy for the weekly contest, so I will be more happy to take part in every contest. I also can think about those 4 algorithms in 90 minutes should be a good sprint. I can use this format to train myself as well.
Set a good goal
One goal is to be able to pass any high standard algorithm and data structure interview, no matter it is a phone screen or onsite. But I also can train myself to pay attention to my own habits, the way I solve problems, the way I choose to communicate. I should find something to work on. For example, I started two months ago to write for Leetcode discuss.
Another thing is to prepare early. How to prepare early? I need to gather some information first, I need to gather some data how others train themselves, specially those top performers.
I like to build up a good habit to be an educator in other areas as well.
It is an easy level algorithm I chose to work on. It is marked as backtracking in my 34 easy level algorithms to work on, I documented the detail in my blog. What I was surprised to learn that the algorithm has 240 discuss, and I did study over five of them, I wrote five solutions.
There are so many good ideas to work on. I like to write more solutions later on. I was so surprised there are so many good players and I like to choose them to be my role models.
It is time for me to learn something better in my life. One way is to find those coaching videos. It does not matter, as long as those coaching are really making good sense, related to most important and basic skills to living in Canada.
I choose to work on writing skill and learn about common mistakes.
It is the first time I choose to spend time to drive to nearby cities near Vancouver in October every weekend, instead of playing tennis, I like to explore nearby cities. I also like to do some research about British Columbia and then I have more knowledge about Canada. I did some research from 2010 to 2018 and stay away from real estate market in Canada. I like to go back to learn some basics again.
A good living
It is important for me to work hard and save money. I also need to learn how to make a good living to invest early using my limited saving. I spent a few trips to Surry, Langley, Abbotsford from 2010 to 2014 to visit those new condos in Surrey and Abbotsford.
How to improve my performance in terms of algorithm and data structure training. I play weekly contest and work on easy level algorithms, and last Saturday I failed one easy level algorithm problem understanding. It is the first time I like to try a few weeks to work on IELTS reading skills, one of ideas is to watch a lot of videos from youtube.com first.
My argument is based on the fact that a good programmer should have very high ability to read and write in English. One way to improve is to keep myself open to those coaching from good educators. I like to learn by myself by watching a lot of videos from youtube.com.
There are a few misunderstandings, I highlight those place I missed in my 10 minutes thinking in the contest.
A string of '0's and '1's is monotoneincreasing if it consists of some number of '0's (possibly 0), followed by some number of '1's (also possibly 0.)
We are given a string S of '0's and '1's, and we may flip any '0' to a '1' or a '1' to a '0'.
Return the minimum number of flips to make S monotone increasing.
More detail about understanding:
1. all 0's is fine as an answer
2. all 1's is fine as an answer
3. The string is in pattern of 0's followed by 1's, but my thinking is more complicated, 0's followed by 1's and then continue to have 0's, followed by 1's. I just made the problem very hard and may not have an answer.
It is a medium level algorithm. I thought about the solution in weekly contest 107 over 10 minutes, but I could not come out the solution in the limited time. So this is my perfect time to learn the algorithm.
It is a hard level algorithm. I tried to write the solution in the contest but I could not manage to pass online judge since I had several issues.
I wrote a solution and shared on leetcode discuss. Here is the link.
I spent 50 minutes to work on the algorithm in the last week contest. I made the first submission until there is 10 minutes left. And then I submitted second time.
First submission is here, line 35 index out of range runtime error. int index2 = map[numberLength]; Second submission is here, I gave the wrong answer. I need to review the definition of return indexes. Line 44 statement needs to be changed.
Definitely I should work more carefully on some test cases, so I can verify my code is working for those test cases.
I also need to figure out how to simplify the code before I make any submission. There is a 5 minutes penalty for each failed submission.
It is the weekly contest again. I learned a few things this time. It is very important to learn who shared the solution just after the discuss, so I can learn those who performs much better than me.
One role model
Here is one role model I like to learn from, since the player solved all 4 algorithms and also wrote a blog for each algorithm in Chinese with solutions. Since I almost finish all easy level algorithms on leetcode.com, I should find ways to learn various advanced players, no matter who they are. I like to learn how to advance my ranking in the contest first.
I need to learn to stay humble. Sometimes I am stumble on easy level algorithm in the contest, and also I could not complete a hard level in the contest. My problem is that I have to rely on Leetcode online judge to find bugs first. It is time for me to show my result using an image. I will remember the mistakes I made on second easy level algorithm, and the effort I put in the third hard level algorithm.
It is time for me to get organized. Recently I reviewed through gmail and then recovered the accounts from Ameritrade I had last 10 years. I did sell all the stock and IRA stock back in 2008, and then I moved on. The idea is to focus on one thing only, at that time, it is the immigration.
After 10 years, I learn that I may make the mistake and I should have allowed those stocks to stay in my stock account instead.
It is so hard to get in Faceook or Amazon to work as a software programmer. But at the very beginning with the phone screen with those two companies, I should purchase 100 shares of stock. I had a phone screen with Facebook January 2015, and I had first phone screen with Amazon back in 2007.
It is very good idea to save money and time to learn writing just by going through IELTS writing videos. I like to boost my score to 8 if I need to take IELTS test. Here is the video.
I also like to improve my reading skills when I work on algorithm and data structure problem solving. I experienced some difficulty on a few algorithms on problem statement, so I just like to set a target to work on - improving writing skills.
A wide variety of sentence structures.
Grammar - range should not be limited
It takes so many years for me to finally know how to train myself to be a top programmer. It takes years.
I like to write a blog related to learning experience I had last three months.
Work on easy things first
It is important for me to learn that I should work on as many easy level algorithms as possible. Through those practice, I can build good habits to solve problems every day, write code every day. And also I like to learn various ideas to solve the problem.
I believe that best learner is to learn from the easy things. There are so many things to work on, and it is so easy to advance the algorithm to the hard level one.
Play leetcode weekly contest
I have to push myself hard, and accepty myself for poor results. I have to take part in every contest and also very active to join the discuss after the contest.
I find that it is the way for me to get better and also learn from very good players after the contest.
I am in the stage called hang in there, I just need to join the weekly contest and show the ranking after each contest, and learn quickly after each contest. I need to get more involved in the discuss, and learn from those sharing just after the contest.
Right now, I learn from my Leetcode weekly contest experience. I have some issues sometimes with easy level algorithms; And I also have issues to score hard level algorithms, since there are multiple test cases, I have problems to manage the code in less than one hour for one hard level algorithm.
I need to figure out ways to push myself hard in my daily practice. Now it is too relax compared to the weekly contest.
I believe that it is the way to become a good programmer.
It is time for me to learn how to be a nice player and say thanksgiving to my coach this June. I had chance to find my weakness, I need to work on easy level algorithms first.
After I solved 160 easy level algorithm, I had chance to celebrate 960 submssions on Leetcode.com.
It is easy to get smarter once I learn from my past 300 submissions. I solved 160 easy level algorithms last three months, I had over 300 submissions.
I started from January 2015. From 2015 to June 2018, I only has submissions on Leetcode.com less than 600.
I need to learn those players, every year with over thousand submissions. Without taking any course, any cost of tuition, one player can learn how to write good program through those Leetcode.com algorithms.
One thing I like to do is to take easy level algorithms first. And also I need to learn that it is important for me to build good habit to write code everyday.
I learn to read other people's profile by checking total submissions.
Here is mine.
Here is my role model with over 2800 submissions. The role model solved over 800 algorithms.
What is difference from mine, 260 solved algorithm, 900 submissions. There are more than 540 algorithms, more than 1900 submissions. Each contest on Leetcode.com has 4 algorithms, so 540 algorithms can be used almost 150 weekly contest algorithms.
In other hand, every onsite interview from Faceook or Amazon, the interviewee will work on 4 algorithms. The extra practice is like a player having more than 100 onsite interviews experience from various software companies, all of those are very focusing on algorithm and data structure as well.
It is very good learning experience to work on those easy level stack algorithms. I finally had time to work on those algorithms one by one. I still remembered that I was told to work on easy level algorithms this June, and I had a coach session with the coach related to next greater element algorithm.
Easy level algorithms
Here is the image to show all easy level algorithms I completed.
I learn from my own mock interview experience. After the mock interview on Oct. 15, 2018, I got the complaint from the interviewee. So I decided to spend extra 30 minutes to help and have discussion with the interviewee.
I had chance to work with the interviewee this time, and then we had good discussion how to solve those algorithms.
How to explain the approach?
Here are the hints I gave in the mock interview. The algorithm is called longest univalue path on Leetcode.com, easy level tree algorithm.
I also wrote down my advice after the mock interview as the interviewer.