May 6, 2016
Easy question - Linked List
Problem statement:
https://www.hackerrank.com/challenges/delete-duplicate-value-nodes-from-a-sorted-linked-list
Julia's solution:
https://gist.github.com/jianminchen/9013539e71764a018f3745c514da9d91
Most favorite solution:
https://gist.github.com/jianminchen/a13738b4ab32decb8601f29777172209
/*
Remove all duplicate elements from a sorted linked list
Node is defined as
struct Node
{
int data;
struct Node *next;
}
*/
Node* RemoveDuplicates(Node *head)
{
Node *cur = head;
int last_seen = cur->data;
while(cur->next) {
if(cur->next->data == last_seen) {
cur->next = cur->next->next;
}else {
cur = cur->next;
last_seen = cur->data;
}
}
return head;
}
Question and Answer:
1. What do you learn through the practice? How long do you take?
Julia spent more than 30 minutes to work on this question; She wrote a two nested loops, and then, came cross time out issue; She tried to direct a pointer to correct position, like 1->1->1->2, she likes to set up first node with value 1's next point to 2. She was in hurry, tried to do it once to make it work in nested second loop. Actually, she figured out the solution just be lazy to let first node with value 1 to point to third node with value 1 first.
Then, she came out this solution using one loop only:
https://gist.github.com/jianminchen/9013539e71764a018f3745c514da9d91
2. What do you learn through studying other submissions?
Julia learned that through the problem solving, she read first 20 submissions, 80% of them should get rid of two loops, or reduce code length to less than 10 lines; one loops is enough to take care of the business; But, people stop when the code works.
Julia knows that value of excellent code. She has to push herself, train herself to discipline herself.
She found the favorite solution,
https://gist.github.com/jianminchen/a13738b4ab32decb8601f29777172209
Her new strategy:
Write the code, finish the coding; and then, delete the code, write again. Stop on the best one. And then, try to sort out if there is a bug in the code, test cases etc. And then, discuss or present the code.
Because when the code is short and clean, it shortens time to do code review, bug fixes.
Another concern is that there are so many solutions to solve a problem, only if the solution is short and concise, people can easily follow and tell the correctness.
Statistics and Comment:
1. Read 200 submissions, around 5-10 using recursive function, 80% more than 10 lines of code, over 10 of them use two nested loops.
2. Enjoy the reading; thinking about myself as interviewer, and see how many of them are impressive; I do not see more than 10 of them.
https://www.hackerrank.com/challenges/delete-duplicate-value-nodes-from-a-sorted-linked-list/leaderboard
one more readable code to follow:
https://gist.github.com/jianminchen/b46755065e4d17c82ad793889e2c911b
3. Time spent: reading code submissions - 2+ hours
Look into those:
https://www.hackerrank.com/contests/programming-interviews-practice-session/challenges
https://www.hackerrank.com/contests/algorithms-practice-match-2/challenges
https://www.hackerrank.com/contests/regex-practice-2/challenges
https://www.hackerrank.com/contests/basic-ds-quiz-2/challenges
https://www.hackerrank.com/basic-ds-quiz-2
https://www.hackerrank.com/countercode
https://www.hackerrank.com/accel-contest
Courses to check:
https://www.coursera.org/learn/algorithmic-thinking-1
https://www.coursera.org/learn/algorithmic-thinking-2#
https://www.coursera.org/maestro/api/certificate/get_certificate?verify-code=V5LZ37UU7P
Quizes:
https://www.hackerrank.com/challenges/basic-algo-quiz-1
https://www.hackerrank.com/challenges/data-structures-quiz-2
Find some interesting problems on the link - hackerRank:
https://www.hackerrank.com/roaclark
https://www.hackerrank.com/epiccode
https://www.hackerrank.com/contests/codesprint-practice/challenges
https://www.hackerrank.com/cherry_su
https://www.hackerrank.com/dotgc
Try quick sort in place on HackerRank - 3 questions
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.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment