题目如下:

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. 1 <= X <= 10^9
  2. 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

最新文章

  1. 【Cocos2d-x for WP8 学习整理】(5)文字显示全整理
  2. tnsnames.ora配置注意(连接新的数据库)
  3. 用DOS命令打开IE浏览器、我的文档等等
  4. 进军swift
  5. KMP的原理详细讲解
  6. jboss-as 目录结构(转)
  7. mysql 调用带返回值的存储过程
  8. 为什么Nhibernate中属性和方法必须Virtual的
  9. supervisor python开发的进程管理工具
  10. vue+node+webpack搭建环境
  11. socket系列之socket服务端与客户端如何通信
  12. 在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例
  13. [shell] if语句用法
  14. Windows安装Git
  15. Python数据类型的内置函数之list(列表)
  16. 对webdriver-driver句柄的理解
  17. cdh 安装调研
  18. ZooKeeper开发手册中文翻译
  19. github不能访问、加载css、js解决办法
  20. Node.js之HTPP URL

热门文章

  1. 存储系统设计——NVMe SSD性能影响因素一探究竟
  2. UIView响应事件的两个方法
  3. spring-boot和redis的缓存使用
  4. 使用C#获取IP地址方法
  5. linux0.11源码内核——系统调用,int80的实现细节
  6. 梅尔频谱(mel-spectrogram)提取,griffin_lim声码器【python代码分析】
  7. python中模块介绍
  8. 术语-MOSS-微软协作工具:MOSS(微软协作工具)
  9. Git-学习开源代码的技巧
  10. 测开之路二十七:Flask基础之动态路由