用 Python 编写程序,查找达到目标所需的给定操作数

pythonserver side programmingprogramming更新于 2026/2/4 10:20:17

假设我们有两个值 start 和 end,我们必须使用这些操作找到将 start 转换为 end 所需的最少操作数 −

  • 减 1

  • 乘以 2

因此,如果输入为 start = 2、end = 7,则输出将为 3,因为我们可以乘以 2 得到 4,然后乘以 2 得到 8,然后减去 1 得到 7。

为了解决这个问题,我们将遵循以下步骤 −

  • ans := 0

  • 无限次执行以下操作,执行

    • 如果 end <= start,则

      • 返回 ans + start − end

    • 否则,当 end 为奇数时,则

      • end := end + 1,ans := ans + 1

    • 否则,

      • end := end / 2 的商

      • ans := ans + 1

让我们看看下面的实现以便更好地理解 −

示例

class Solution:
   def solve(self, start, end):
      ans = 0
      while True:
         if end <= start:
            return ans + start - end
         elif end % 2:
            end += 1
            ans += 1
         else:
            end //= 2
            ans += 1
ob1 = Solution()
start = 2
end = 7
print(ob1.solve(start, end))

输入

2, 7

输出

3

相关文章


有用资源