public int minMoves(int target, int maxDoubles) {
int ans = 0;
//反向思考,将target变为1,优先减半
while (maxDoubles!=0&&target != 1) {
if (target % 2 == 1) {
--target;//奇数要变为其一半必须要先递减
}
else {
--maxDoubles;//偶数直接减半
target /= 2;
}
++ans;//操作次数加1
}
ans += (target - 1);
return ans;
}
2022.1.21-----leetcode.2139
最新推荐文章于 2024-10-31 16:16:13 发布