力扣-397题 整数替换(C++)- 记忆化搜索

题目链接:https://leetcode-cn.com/problems/integer-replacement/
题目如下:
在这里插入图片描述
在这里插入图片描述

class Solution {
    
    
public:
    unordered_map<long,long> umap;
    int integerReplacement(int n) {
    
    
        if(n==1) return 0;
        
        if(umap.count(n)!=0) return umap[n];
        
        if(n%2==0){
    
    
            return umap[n]=1+integerReplacement(n/2);
        }else{
    
    //当n+1或n-1时都是变成了偶数,则之后的下一步一定是n/2
            //为防止溢出,可以使用整数除法(n/2)+1和n/2
            return umap[n]=2+min(integerReplacement(n/2),integerReplacement(n/2+1));
        }
    }
};

おすすめ

転載: blog.csdn.net/qq_40467670/article/details/121432674