题目:5194. 得到目标值的最少行动次数
你正在玩一个整数游戏。从整数 1 开始,期望得到整数 target 。
在一次行动中,你可以做下述两种操作之一:
递增,将当前整数的值加 1(即, x = x + 1)。
加倍,使当前整数的值翻倍(即,x = 2 * x)。
在整个游戏过程中,你可以使用 递增 操作 任意 次数。但是只能使用 加倍 操作 至多 maxDoubles 次。
给你两个整数 target 和 maxDoubles ,返回从 1 开始得到 target 需要的最少行动次数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-moves-to-reach-target-score
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
代码
class Solution:
def minMoves(self, target: int, maxDoubles: int) -> int:
cnt = 0
if maxDoubles == 0:
return target-1
while target>1:
if (maxDoubles==0):
cnt += target-1
return cnt
if (target%2):
target=target-1
else:
target = target//2
maxDoubles = maxDoubles - 1
cnt = cnt + 1
return cnt