Iterative and Recursion Algorithms to Compute the Number of Step
- Time:2020-09-11 08:17:29
- Class:Weblog
- Read:27
Given a non-negative integer num, return the number of steps to reduce it to zero. If the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.
Example 1:
Input: num = 14
Output: 6Explanation:
Step 1) 14 is even; divide by 2 and obtain 7.
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3.
Step 4) 3 is odd; subtract 1 and obtain 2.
Step 5) 2 is even; divide by 2 and obtain 1.
Step 6) 1 is odd; subtract 1 and obtain 0.
Example 2:Input: num = 8
Output: 4
Explanation:
Step 1) 8 is even; divide by 2 and obtain 4.
Step 2) 4 is even; divide by 2 and obtain 2.
Step 3) 2 is even; divide by 2 and obtain 1.
Step 4) 1 is odd; subtract 1 and obtain 0.
Example 3:Input: num = 123
Output: 12Constraints:
0 <= num <= 10^6Hints:
Simulate the process to get the final answer.
Iterative Approach
We can simulate the process until we make the number zero (simple, intuitive and effective).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Solution { public: int numberOfSteps (int num) { int r = 0; while (num != 0) { r ++; if (num % 2 == 0) { num >>= 1; } else { num --; } } return r; } }; |
class Solution { public: int numberOfSteps (int num) { int r = 0; while (num != 0) { r ++; if (num % 2 == 0) { num >>= 1; } else { num --; } } return r; } };
Recursive Algorithm
Alternatively, we can do this recursively but this approach is at the risk of stack-overflow.
1 2 3 4 5 6 7 | class Solution { public: int numberOfSteps (int num) { return num == 0 ? 0 : 1 + numberOfSteps(num % 2 == 0 ? num / 2 : num - 1); } }; |
class Solution { public: int numberOfSteps (int num) { return num == 0 ? 0 : 1 + numberOfSteps(num % 2 == 0 ? num / 2 : num - 1); } };
–EOF (The Ultimate Computing & Technology Blog) —
Recommend:Algorithms to Detect Pattern of Length M Repeated K or More Time
Using the stdout to debug print the solution in the leetcode con
Tutorial: How to Set Up a API Load Balancer by Using CloudFlare
Introducing the Pancake Sorting Algorithm
What Should You Blog About During the Pandemic and Beyond?
6 Tips For Starting a Business During a Pandemic
Will Your Blog be affected by the Current Facebook Ad Boycott?
Unobvious Life Hacks for Ads Optimization in Google
Essential Traits That Will Help Bloggers Work From Home Successf
Examining the Physical and Mental Health of Writers and Bloggers
- Comment list
-
- Comment add