题目链接: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));
}
}
};