私は、次の質問に取り組んでいます:正の整数nをなぜこの再帰アルゴリズムは入力2,147,483,647に対して間違った答えを出すのですか?
を考えると、あなたは次のように操作を行うことができます。nが偶数の場合
- は、N/2のnを交換してください。
nが奇数の場合、あなたがn個に置き換えることができます- のいずれかのn + 1またはn - 1
1になるためにn個のために必要な代替品の最小数は何ですか?
ここで私が思い付くしたコードです:入力が2147483647である場合には、私のコードが誤っ32.なぜ私のコードが間違った答えを与えている、正しい答えの代わりに33を出力
class Solution {
private:
unordered_map<int, long long> count_num;
public:
int integerReplacement(int n) {
count_num[1] = 0;count_num[2] = 1;count_num[3] = 2;
if(!count_num.count(n)){
if(n%2){
count_num[n] = min(integerReplacement((n-1)/2), integerReplacement((n+1)/2))+2;
}else{
count_num[n] = integerReplacement(n/2) +1;
}
}
return(count_num[n]);
}
};
は、ここに?
これは機能します。ありがとう! – Sooooophie