397. Integer Replacement

Difficulty:
Related Topics:
Similar Questions:

    Problem

    Given a positive integer n, you can apply one of the following operations:

    Return the minimum number of operations needed for n to become 1.

      Example 1:

    Input: n = 8
    Output: 3
    Explanation: 8 -> 4 -> 2 -> 1
    

    Example 2:

    Input: n = 7
    Output: 4
    Explanation: 7 -> 8 -> 4 -> 2 -> 1
    or 7 -> 6 -> 3 -> 2 -> 1
    

    Example 3:

    Input: n = 4
    Output: 2
    

      Constraints:

    Solution

    class Solution {
        public int integerReplacement(int n) {
            Map<Integer, Integer> dp = new HashMap<>();
            return solve(n, dp);
        }
    
        private int solve(int n, Map<Integer, Integer> dp) {
            if (n == 1) {
                return 0;
            }
            if (dp.containsKey(n)) {
                return dp.get(n);
            }
            int ans;
            if (n % 2 == 0) {
                ans = 1 + solve(n >>> 1, dp);
            } else {
                ans = 1 + Math.min(solve(n + 1, dp), solve(n - 1, dp));
            }
            dp.put(n, ans);
            return ans;
        }
    }
    

    Explain:

    nope.

    Complexity: