I wanted to compute 80th term of the Fibonacci series. I wrote the rampant recursive function, int fib(int n){ return (1==n || 2==n) ? 1 : fib(n-1) + fib(n-2); } and waited for the result. I wait… and wait… and wait… With an 8GB RAM and an Intel i5 CPU, why is it taking so long? I terminated the process and tried computing the 40th term. It took about a second. I put a check and was shocked to find that the above recursive function was called 204,668,309 times while computing the 40th term. More than 200 million times? Is it reporting function calls or scam of some government? The Dynamic Programming solution computes 100th Fibonacci term in less than fraction of a second, with a single function call, taking linear time and constant extra memory. A recursive solution, usually, neither pass all test cases in a coding competition, nor does it impress the interviewer in an interview of company like Google, Microsoft, etc. The most difficult questions asked in competitions and interviews, are from dynamic programming. This book takes Dynamic Programming head-on. It first explain the concepts with simple examples and then deep dives into complex DP problems.
In my career spanning more than a decade, I have used C language in only two projects. All these years, I had either coded in C++, Java or C#. However, during interviews, I had always coded my solutions in C. When an interviewer asks you to implement a Stack having one extra operation, getMinimum that returns minimum element in current stack, you are expected to give your own implementation of stack from scratch and not use Stack class in Java library. C language allows your solution to be focused on the problem without unnecessary clutter of class and object definitions. Java and C# are good to showcase your design skills, but if the question is not explicitly about object-oriented design, C (or C++) provides flexibility to demonstrate your memory management skills and help implement everything required using data structure and algorithms. C is a lightweight language and is easy to learn in a short span of time. Understanding the internals of C helps comprehend other high-level languages better because nthe concepts and terminology remain the same. This book gives you an insight into the journey that your code goes through and best practices at each stage.
In my career spanning more than a decade, I have used C language in only two projects. All these years, I had either coded in C++, Java or C#. However, during interviews, I had always coded my solutions in C. When an interviewer asks you to implement a Stack having one extra operation, getMinimum that returns minimum element in current stack, you are expected to give your own implementation of stack from scratch and not use Stack class in Java library. C language allows your solution to be focused on the problem without unnecessary clutter of class and object definitions. Java and C# are good to showcase your design skills, but if the question is not explicitly about object-oriented design, C (or C++) provides flexibility to demonstrate your memory management skills and help implement everything required using data structure and algorithms. C is a lightweight language and is easy to learn in a short span of time. Understanding the internals of C helps comprehend other high-level languages better because nthe concepts and terminology remain the same. This book gives you an insight into the journey that your code goes through and best practices at each stage.
Searching & sorting algorithms form the back bone of coding acumen of developers. This book comprehensively covers In-depth tutorial & analysis of all major algorithms and techniques used to search and sort across data structures. All major variations of each algorithm (e.g. Ternary, Jump, Exponential, Interpolation are variations of Binary search). 110 real coding interview questions as solved examples and unsolved problems. Case studies of implementation of searching and sorting in language libraries. Introduction to how questions are asked and expected to answer on online competitive coding and hiring platforms like hackerrank.com, codechef.com, etc. Introduction to data structures.
I wanted to compute 80th term of the Fibonacci series. I wrote the rampant recursive function, int fib(int n){ return (1==n || 2==n) ? 1 : fib(n-1) + fib(n-2); } and waited for the result. I wait… and wait… and wait… With an 8GB RAM and an Intel i5 CPU, why is it taking so long? I terminated the process and tried computing the 40th term. It took about a second. I put a check and was shocked to find that the above recursive function was called 204,668,309 times while computing the 40th term. More than 200 million times? Is it reporting function calls or scam of some government? The Dynamic Programming solution computes 100th Fibonacci term in less than fraction of a second, with a single function call, taking linear time and constant extra memory. A recursive solution, usually, neither pass all test cases in a coding competition, nor does it impress the interviewer in an interview of company like Google, Microsoft, etc. The most difficult questions asked in competitions and interviews, are from dynamic programming. This book takes Dynamic Programming head-on. It first explain the concepts with simple examples and then deep dives into complex DP problems.
Thank you for visiting our website. Would you like to provide feedback on how we could improve your experience?
This site does not use any third party cookies with one exception — it uses cookies from Google to deliver its services and to analyze traffic.Learn More.