【发布时间】:2020-06-12 09:57:03
【问题描述】:
给定两个正数M和N,现在只能对M做以下三种操作之一: 加 1,减 1,或乘以 2。
- 双倍:乘以 2。
- 递减:减 1。
- 增量:加 1。
每次你可以选择三个操作中的任何一个。
输入:M = 2,N = 3 输出:1 (2 + 1)
输入:M = 2,N = 5 输出:2(2 * 2, + 1)
返回显示数字 Y 所需的最少操作次数。
这里可以使用BFS,但是它的时间复杂度很高,可能是O(2^n)。 至于更简单的问题,leetcode991 使用贪心算法。任何人都可以提供类似的。
【问题讨论】:
-
这是从 leetcode991: 坏计算器改过来的
-
我没有得到步骤。你能逐行提及它们吗?
-
@vivek_23 以输入:M = 2, N = 5 为例。将 M 乘以 2,然后得到 4,将 4 乘以 1,得到 5。因此只需根据需要执行 2 步。我说清楚了吗?
-
我指的不是过程,而是问题陈述本身。 Double: 乘以 2 是什么意思?格式不清楚。可以逐点添加吗?