贪心算法(12))(java)坏了的计算器
题目:在显示着数字 startValue的坏计算器上,我们可以执行以下两种操作:
·双倍(Double):将显示屏上的数字乘2;
·递减(Decrement):将显示屏上的数字减1.
给定两个整数 startValue 和 target。返回显示数字target所需的最小操作数。
示例1:
输入: startValue = 2,target =3
输出:2
解释: 先进行双倍运算,然后再进行递减运算{2->4-> 3},
解法:正难则反+贪心
public class Solution {
public int brokenCalc(int startValue,int target)
{
int ret=0;
while (target>startValue)
{
if(target%2==0)target/=2;
else target+=1;
ret++;
}
return ret+startValue-target;
}
public static void main(String[] args) {
Solution solution=new Solution();
int []startValue={2};
int []target={3};
System.out.println(solution.brokenCalc(startValue[0],target[0]));
}
}