leetcode 991. Broken Calculator(坏掉的计算器)

Leetcode 991:坏了的计算器(超详细的解法!!!) 在显示着数字的坏计算器上,我们可以执行以下两种操作: **双倍(Double):**将显示屏上的数字乘 2; **递减(Decrement):**将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作数。 示例 1: 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}. 示例 2: 输入... 阅读详情

There is a broken calculator that has the integer startValue on its display initially. In one operation, you can:

multiply the number on display by 2, or
subtract 1 from the number on display.

Given two integers startValue and target, return the minimum number of operations needed to display target on the calculator.

Example 1:

Input: startValue = 2, target = 3
Output: 2
Explanation: Use double operation and then decrement operation {2 -> 4 -> 3}.

Example 2:

Input: startValue = 5, target = 8
Output: 2
Explanation: Use decrement and then double {5 -> 4 -> 8}.

有个计算器,它显示了一个数字startValue, 因为坏掉了,所以只能进行两种运算,
一种是把startValue * 2,另一种是startValue - 1。
问通过多少次运算才能达到target。

思路:
先来看一个简单的情形,startValue > target的时候,
这时显然不能x2,只能往下减,每次只能-1,所以减(startValue - target)次就行了。

startValue < target时,
把startValue往上增就只能x2, 那如果target不是2的倍数怎么办,

不妨反过来考虑,先把target变成2的倍数,
因为startValue只能每次-1,反过来就是target只能每次+1。

同样的,startValue只能x2, 那么target就只能除2。
只要能把target移动到startValue就行了。

    public int brokenCalc(int startValue, int target) {
        if(startValue >= target) return startValue - target;
        int result = 0;
        
        while(target > 0) {
            if(startValue >= target) {
                result += (startValue - target);
                return result;
            }
            if(target % 2 == 1) {
                target ++;       
            } else {
                target /= 2;
            }
            result ++;
        }
        return result;
    }
PyCharm与MicroPython联手:打造高效ESP32开发环境 本文详细介绍了如何使用PyCharm与MicroPython打造高效的ESP32开发环境。通过配置PyCharm插件、刷写MicroPython固件以及实战示例,帮助开发者快速上手嵌入式Python开发,显著提升物联网项目的开发效率。 阅读详情

相关推荐

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

文章目录准备一、使用代码生成器1.数据库2.导入表并生成代码二、导入代码文件1.新建一个模块2.导入zip代码文件3.模块环境配置添加菜单和访问地址总结 准备 前提要把系统启动起来,部分教程可以参考这边文章若依框架RuoYi前后端分离项目导入IDEA及运行启动 但是完全参考这篇文章还是不能把项目启动起来,因为这篇文章没有说明数据库。 我是用的是本地数据库,采用xampp+Navicat的组合来部署和访问数据库。打开Navicat,连接并创建数据库ry-vue并导入数据脚本ry_20191008.sql,q

dream_coke的博客 1万+

LeetCode991. Broken Calculator

某个计算器只有**乘2**和**减1**两种操作。通过最少的操作使得`X`得到`Y`

grllery的博客 272

大模型的安全发展与安全治理

2022 年底,OpenAI 推出的 ChatGPT 在文本生成领域实现了重大突破,引领了大模型技术的发展方向,推动了各式各样的基座大模型及行业大模型的发展,并逐步向多模态和具身化方向迅速演进。显然,大模型展现出的强大能力为人工智能通用化揭开了序幕。然而,大模型技术的安全性也面临着生成内容的安全性、伦理道德等重大挑战。只有积极确保大模型的安全性,才能更有效地推动其持续发展,进而更好地应对大模型技术变革所带来的机遇与挑战。

qq_41432686的博客 2582

leetcode:991. 坏了的计算器(java 贪心)

package LeetCode; /* 991. 坏了的计算器 显示英文描述 在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作数。 示例 1: 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减...

pioneer的博客 305

Excel VBA--按某一列拆分数据到多个文件

首先,将需要拆分的sheet命名为“明细”,接下来运行此代码,按提示操作即可。 在这里插入代码片 Sub chaifen() '定义变量类型 Dim sht, sh1, sh2 As Worksheet Dim k, i, j As Integer Dim irow As Integer Dim col As Integer Dim str As String '程序开始是要求输入按哪一列拆分数...

weixin_43650026的博客 5871

Frida实战:如何逆向分析某电商App的doCommandNative函数(附完整Hook脚本)

本文详细介绍了如何使用Frida逆向分析电商App中的doCommandNative函数,涵盖动态注册识别、SO加固对抗及高级Hook脚本编写等实战技巧。通过完整Hook脚本示例,帮助安全研究人员深入理解JNICLibrary的关键函数逆向分析方法,提升移动应用安全研究能力。

weixin_29327977的博客 615

leetcode 991. 坏了的计算器

https://leetcode-cn.com/problems/broken-calculator/comments/ 在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字X。 返回显示数字Y所需的最小操作数。 示例 1: 输入:X = 2, Y...

ever_evil的博客 336

Cadence IC618与Spectre231安装:环境变量与License配置详解

在Linux系统中部署Virtuoso等EDA工具时,环境变量与License管理是决定工具能否顺利启动的核心环节。环境变量决定了系统如何找到工具二进制文件以及工具如何定位自身资源,而License则通过FlexLM授权机制控制工具的使用权限。理解PATH、CDS_ROOT、CDS_LIC_FILE等关键变量的作用,掌握lmgrd服务与lmstat验证方法,能显著减少安装后启动失败的概率。无论是学生初装Cadence IC618与Spectre231,还是实验室工作站需要搭建可用的模拟设计环境,理顺环境变量

weixin_29192365的博客 366

*leetcode-991-坏了的计算器-medium

题目描述 在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作数。 示例 1: 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}. 示例 2: 输入:X ...

We need to go deeper 266

【Codecs系列】HEVC-SCC(一):核心技术介绍

DATE: 2020.6.4【Tags: HEVC SCC】 1、参考网址 2、SCC简介 3、HEVC-SCC核心技术

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 4803

Roboflow 与 YOLOv11 数据集全流程:从获取到训练,让你数据无忧

上传图像:点击“Upload”按钮,批量上传本地图像(支持 JPG、PNG 格式,单张最大 10MB)。智能标注:利用 Roboflow 的“Auto-Annotate”功能,基于预训练模型自动生成标注,再手动微调,标注效率提升 70%。格式导出:标注完成后,同样选择“YOLOv11”格式导出,流程与公开数据集一致。

m0_71589036的博客 270

LeetCode 991. 坏了的计算器(逆向思考)

1. 题目 在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作次数。 示例 1: 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}. 示例 2: 输入:...

Michael是个半路程序员 1018

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

【LeetCode】991. Broken Calculator 解题报告(Python)

作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录题目描述题目大意解题方法日期 题目地址:https://leetcode.com/problems/broken-calculator/ 题目描述 On a broken calculator that has a number showing on its display, we...

负雪明烛 1696

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Leetcode 991:坏了的计算器

问题描述: 在显示着数字的坏计算器上,我们可以执行以下两种操作: (1)双倍:将显示屏上的数字乘2; (2)递减:将显示屏上的数字减1; 最初,计算器显示数字X。 返回显示数字Y所需的最小操作数。 示例1: 输入:X=2,Y=3 输出:2 解释:先进行双倍运算,然后再进行递减运算{2-&gt;4-&gt;3} 示例2: 输入:X=5,Y=8 输出:3 解释:先双倍,然后递...

weixin_35338624的博客 281

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode 991. 坏了的计算器(C++、python)

在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作数。   示例 1: 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减运算 {2 -&gt; 4 -&gt; 3}. 示例 2: ...

qq_27060423的博客 315

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

leetcode-注意事项

leetcode-注意事项 如果循环中有prices[i+1],循环终止条件是 i

myan991的博客 394

ARM架构下JavaWeb大文件上传优化实践

在服务器国产化替代进程中,ARM架构与x86架构的差异导致大文件上传面临内存管理、IO性能等挑战。JavaWeb应用通过JVM参数调优(如使用ZGC垃圾回收器)、零拷贝技术和内存映射文件等方案,可显著提升大文件处理能力。特别是在金融等行业系统迁移场景中,针对国产服务器(如鲲鹏、飞腾)的特性优化,能够实现10GB以上文件的稳定上传。本文基于真实项目案例,详解如何通过分片上传、直接内存分配等技术手段,解决ARM环境下常见的OOM、上传超时等问题,为国产化替代提供可落地的工程实践方案。

weixin_34221112的博客 428

LeetCode(991 坏了的计算器)

如题 一眼看上去,两种思路,一种按题意X最快增长,一种是Y最快下降。第二种更好实现 public static int brokenCalc(int X, int Y) { int count=0; while(X<Y) { //想要Y最速下降,必然是优先除2 if(Y%2==0) { //对应X的*2操作 Y=Y>>1; }else { /...

qq_23134039的博客 243

leetcode991. 坏了的计算器(贪心)

在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作数。 示例 1: 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}. 代码 class Solution { public int brokenCalc(int X, int Y) { if (

weixin_44560620的博客 223

Leetcode 991. 坏了的计算器(贪心,逆向思维)

题目 思路 这道题当X>=Y时只能进行递减操作,所以结果为X-Y。X<Y的情况,如果正向思考,即思考如何从X到Y的话思路比较复杂,因为很难描述从X开始每次应该选择哪一种操作。理想状态应该是在接近Y的1/8,1/4,1/2的情况下进行加倍操作,但是从程序角度不好描述。这道题比较好的思路是逆向思考,即思考如何从Y到X,此时对应的Y的操作为加1和除以2。从Y的角度需要尽量除以2,该操作需要在Y为偶数时进行,否则要先加1再进行操作,知道Y<=X,之后只调用+1操作即可。这样对于Y 来说.

qq_41461410的博客 225

Leetcode 991.坏了的计算器(Broken Calculator)

Leetcode 991.坏了的计算器 1 题目描述(Leetcode题目链接)   在显示着数字的坏计算器上,我们可以执行以下两种操作: 双倍(Double):将显示屏上的数字乘 2; 递减(Decrement):将显示屏上的数字减 1 。 最初,计算器显示数字 X。 返回显示数字 Y 所需的最小操作数。 输入:X = 2, Y = 3 输出:2 解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}. 输入:X = 3, Y = 10 输出:3 解释:先双倍,然后递减,再

qq_39378221的博客 297

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 352

LeetCode Hot 100 链表专题 三· 3 题(Java)

收录题目:2. 两数相加、19. 删除链表的倒数第 N 个结点、24. 两两交换链表中的节点。 统一结构:① 题目分析与解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结。 贯穿三题的两条主线:虚拟头结点 dummy(统一处理头结点被修改的场景)与 指针修改顺序(避免断链、丢引用)。

2401_88612756的博客 481

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 174

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 197
上一篇: leetcode 1663. Smallest String With A Given Numeric Value(具有给定数值的最小字符串)
下一篇: np.where说明
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值