【Leetcode】NO.5194 得到目标值的最少行动次数(Python) [周赛]

题目: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

上一篇:2022.1 写题记录


下一篇:C语言解决PTA1008 数组元素循环右移问题