【leetcode】991. Broken Calculator
2024-10-07 14:45:49
题目如下:
On a broken calculator that has a number showing on its display, we can perform two operations:
- Double: Multiply the number on the display by 2, or;
- Decrement: Subtract 1 from the number on the display.
Initially, the calculator is displaying the number
X
.Return the minimum number of operations needed to display the number
Y
.Example 1:
Input: X = 2, Y = 3
Output: 2
Explanation: Use double operation and then decrement operation {2 -> 4 -> 3}.Example 2:
Input: X = 5, Y = 8
Output: 2
Explanation: Use decrement and then double {5 -> 4 -> 8}.Example 3:
Input: X = 3, Y = 10
Output: 3
Explanation: Use double, decrement and double {3 -> 6 -> 5 -> 10}.Example 4:
Input: X = 1024, Y = 1
Output: 1023
Explanation: Use decrement operations 1023 times.Note:
1 <= X <= 10^9
1 <= Y <= 10^9
解题思路:要增加X只能做乘法操作,要减小X只能做减法。如果X>Y的话,那么只需要一直对X做减法操作直到X=Y为止,operation的次数是X-Y;对于X<Y的情况,我们可以由Y的值反推X,即如果Y是偶数,那么令Y=Y/2,如果Y是奇数,令Y=Y-1,直至Y=X为止。
代码如下:
class Solution(object):
def brokenCalc(self, X, Y):
"""
:type X: int
:type Y: int
:rtype: int
"""
if X >= Y:
return X - Y
res = 0
while Y != X:
res += 1
if Y > X and Y % 2 == 0:
Y = Y / 2
else:
Y = Y + 1
return res
最新文章
- 【Cocos2d-x for WP8 学习整理】(5)文字显示全整理
- tnsnames.ora配置注意(连接新的数据库)
- 用DOS命令打开IE浏览器、我的文档等等
- 进军swift
- KMP的原理详细讲解
- jboss-as 目录结构(转)
- mysql 调用带返回值的存储过程
- 为什么Nhibernate中属性和方法必须Virtual的
- supervisor python开发的进程管理工具
- vue+node+webpack搭建环境
- socket系列之socket服务端与客户端如何通信
- 在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例
- [shell] if语句用法
- Windows安装Git
- Python数据类型的内置函数之list(列表)
- 对webdriver-driver句柄的理解
- cdh 安装调研
- ZooKeeper开发手册中文翻译
- github不能访问、加载css、js解决办法
- Node.js之HTPP URL