LeetCode 650. 2 Keys Keyboard--动态规划

LeetCode—650. 只有两个键的键盘详细解法附代码 题目描述 最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作: 1.Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。 2.Paste (粘贴) : 你可以粘贴你上一次复制的字符。 给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。 示例 1: 输入... 阅读详情

题目链接

650. 2 Keys Keyboard

Initially on a notepad only one character 'A' is present. You can perform two operations on this notepad for each step:

  1. Copy All: You can copy all the characters present on the notepad (partial copy is not allowed).
  2. Paste: You can paste the characters which are copied last time.

Given a number n. You have to get exactly n 'A' on the notepad by performing the minimum number of steps permitted. Output the minimum number of steps to get n 'A'.

Example 1:

Input: 3
Output: 3
Explanation:
Intitally, we have one character 'A'.
In step 1, we use Copy All operation.
In step 2, we use Paste operation to get 'AA'.
In step 3, we use Paste operation to get 'AAA'.

解:

dp[i]表示得到i个'A'需要的最少step数,dp[1] = 0,对于dp[i],他可以由每个能整除i的数j(j > 1),通过对dp[i/j]做1次Copy All和j-1次Paste得到,而其中能使step最少的一定是所有j中最小的,比如我们想得到dp[24],

如果通过dp[2],step总数是2+12 = 14,

如果通过dp[3],step总数是3+8 = 11,

如果通过dp[4],step总数则4+6 = 10,

如果通过dp[6],step总数是5+4 = 9,

如果通过dp[8],step总数是6+3 = 9,

如果通过dp[12],step总数是7+2 = 9,

为了减少复杂度,遍历j的范围可以缩小到[2,n/2],代码:

class Solution {
public:
    int minSteps(int n) {
        int *dp = new int[n+1];
        if (n == 1) return 0;
        for (int i = 2; i <= n; i++) {
            dp[i] = i;
            for (int j = 2; j < n/2+1; j++) {
                if (i % j == 0 && (dp[i/j]+j) < dp[i]) {
                      dp[i] = dp[i/j]+j;
                      break;
                }
            }
        }
        return dp[n];
    }
};


【精】leetcode - 650. 2 Keys Keyboard 【动态规划 + 质数 & 非质数 + 简洁表达】 题目 Initially on a notepad only one character 'A' is present. You can perform two operations on this notepad for each step: Copy All: You can copy all the characters present on the notepad (par 阅读详情

相关推荐

Colab虚拟环境配置全攻略:从安装到实战应用

本文详细介绍了在Google Colab中配置Python虚拟环境的完整流程与实战技巧。通过安装Anaconda、创建独立环境、解决常见错误及结合深度学习项目应用,帮助用户有效管理依赖、避免冲突,并利用环境持久化策略提升在Colab中的开发效率与项目可复现性。

weixin_29204121的博客 340

LeetCode——650. 只有两个键的键盘(2 Keys Keyboard)[中等]——分析及代码(Java)

LeetCode——650. 只有两个键的键盘[2 Keys Keyboard][中等]——分析及代码[Java]一、题目二、分析及代码1. 动态规划(1)思路(2)代码(3)结果三、其他 一、题目 最初记事本上只有一个字符 ‘A’ 。你每次可以对这个记事本进行两种操作: Copy All(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。 Paste(粘贴):粘贴 上一次 复制的字符。 给你一个数字 n ,你需要使用最少的操作次数,在记事本上输出 恰好 n 

江南土豆的博客 368

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

疾病负担研究(GBD)——如何使用joinpoint软件计算AAPC

weixin_44240228的博客 1万+

leetcode 650. 2 Keys Keyboard 只有两个键的键盘(中等)

还是动态规划,这里需要乘除法来计算位置,因为粘贴操作是位数增加的。我们使用一个一维数组dp,其中位置i表示延展到长度i的最少操作次数。

ln_ydc的专栏 200

eLabRadio软件无线电虚实结合仿真开发平台简介

在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。

weixin_55349105的博客 6319

Python爬虫实战:京东/淘宝商品价格与评论监控系统——从User-Agent伪装到编码陷阱的全面攻克

在电商数据驱动决策的今天,无论是个人消费者想抓住历史低价,还是市场分析师需要追踪竞品动态,抑或是算法交易员依赖实时价格信号,自动化的商品价格与评论监控系统都已成为不可或缺的工具。然而,电商平台的反爬虫策略日益严苛,字符编码的“暗坑”更是让初学者屡屡碰壁。本文将以京东(JD.com和淘宝(Taobao.com两大主流平台为目标,手把手带你构建一个稳定、高效的商品监控爬虫。User-Agent伪装——如何模拟真实浏览器行为,突破初级反爬。GBK/UTF-8编码混战。

2201_76125261的博客 75

650. 2 Keys Keyboard [JavaScript]

一、解题思路   读完题目之后,需要知道以下几点: 当n=1时,默认提供一个’A’,不需要做任何操作。 当n=2时,必须执行一次复制’A’的操作。 当n&amp;amp;gt;2时,要么执行操作,要么执行复制+粘贴的操作。   实际上你会发现当n&amp;amp;gt;2时,执行操作的所有可能性是一颗二叉树:   那么利用递归就可以很轻松的解决这样的问题: 二、代码实现 const minSteps = n =&amp;amp;gt; {...

descire 213

C# 实现 Modbus 通信全教程(支持 TCP 和 RTU,含完整错误处理)

环境准备:安装 NModbus4 库,明确设备参数(IP/串口、地址、数据类型);连接设备:TCP 用 TcpClient,RTU 用 SerialPort,注意超时和参数匹配;读写数据:根据数据类型调用对应方法(读保持寄存器用 ReadHoldingRegisters);错误处理:捕获连接、超时、协议等异常,针对性排查问题。掌握这些后,即可轻松实现与工业设备的 Modbus 通信,为上位机开发提供稳定的数据交互能力。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2067

Leetcode 650. 2 Keys Keyboard

题目Initially on a notepad only one character 'A' is present. You can perform two operations on this notepad for each step:Copy All: You can copy all the characters present on the notepad (partial copy i

煤矿屁的专栏 2836

PCB仿真软件:Altium Designer_(18).PCB设计中的热管理

在PCB设计中,热管理是一个至关重要的环节。随着电子设备的集成度越来越高,功耗和发热量也随之增加,不合理的热设计可能导致电路板过热,从而影响电路的性能和可靠性。热管理不仅能够提高电路板的使用寿命,还能确保电路在各种环境条件下的稳定工作。本节将详细介绍如何在Altium Designer中进行有效的热管理,包括热分析、热设计和热仿真等关键步骤。

kkchenjj的博客 1986

SAP 采购申请、采购订单的审批策略

采购申请、采购订单的审批策略 采购申请审批 PR审批可以分为:含分类、无分类 1、无分类PR审批: A、后台配置: 设置批准代码(批准代码可以设置多级审批): 发布批准标识使用系统已有的 “2 询价/采购订单”: 新建采购申请审批策略Z1(仅设置1级审批,一共可以设置8级审......

willieyuan的博客 2万+

[动态规划] leetcode 650 2Keys Keyboard

problem:https://leetcode.com/problems/2-keys-keyboard/ 重做此题,发现依然只能写出N2的算法,水平并没有提升TAT class Solution { public: int minSteps(int n) { vector<vector<int>> d...

ayzejx8547408的博客 128

YOLOv8改进策略【Neck】| CGA Fusion:内容引导的注意力融合模块,空间权重引导的多模态特征自适应融合

本文记录的是利用CGA Fusion 模块改进 YOLOv8 的多模态融合部分。(Content-Guided Attention Fusion)通过内容引导注意力生成空间权重,引导高低层特征的自适应融合。本文利用模块,通过内容引导注意力生成空间权重,自适应地融合两个模态的特征,在特征融合阶段实现跨模态语义对齐与噪声抑制,增强对不同模态互补特征的利用能力,从而提升模型在多模态场景下的检测鲁棒性与准确性。DEA-Net: Single image dehazing based on detail-enhanc

Limiiiing的博客 282

LeetCode650. 2 Keys Keyboard

最少复制粘贴次数得到n个A

grllery的博客 231

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LeetCode 650. 2 Keys Keyboard

动态规划解答 : LeetCode 650. 2 Keys Keyboard Initially on a notepad only one character 'A' is present. You can perform two operations on this notepad for each step: Copy All: You can copy all the ch

reborncgy的博客 251

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode-650. 2 Keys Keyboard [C++][Java]

Given an integern, returnthe minimum number of operations to get the character'A'exactlyntimes on the screen.

贫道绝缘子的博客 308

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[LeetCode] 650. 2 Keys Keyboard

原题链接: https://leetcode.com/problems/2-keys-keyboard/ 1. 题目描述 Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step: Copy All: You can c...

Ber03的博客 237

leetcode 650. 2 Keys Keyboard | 650. 只有两个键的键盘(暴力递归->傻缓存->DP)

题目 https://leetcode.com/problems/2-keys-keyboard/description/ 题解 再一次印证了我在 总结 DP 模型套路 中说的:从递归->DP之后,新的代码已经脱离原有含义了,且整个优化过程可以不看题意、仅从代码逻辑上进行改写。对于改成DP之后的代码,它是否与题意还有联系已经不重要了。 喷一下官方题解:上来就贴所谓的“状态转移方程”,这玩意儿谁能看懂?明显是拿结论去推原因,给结论重新编一个看似有道理的解释,实际上已经与最原始的思维过程相差甚远了。

寒泉 4万+

650 2 Keys Keyboard

文章目录题目bfs思路 TLEbfs code TLE数论DP 思路数轮DP Code小结 标签:dp,数论 题目 Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step: Copy All: You can cop...

liuchaohs的博客 218

LeetCode#650 2 Keys Keyboard题解(C++版)

题干 原题网址: https://leetcode.com/problems/2-keys-keyboard/description/ 题干解析输入一个[1, 1000]之间的整数n,代表目标需要生成的A的个数。给你的文本上初始化有一个A,你对文本只能有以下两种操作,最后要让文本上有n个A,找出最小的操作次数。 操作1:Copy all,即复制当前文本的所有字符。 操作2:粘贴。知识点

游笑天涯 415

LeetCode 650: 2 Keys Keyboard 解题与思考

LeetCode 650: 2 Keys Keyboard 解题与思考[原题链接]题目描述一个键盘只有两种操作: 1、复制当前所有字符串(不能部分复制) 2、粘贴剪贴板上的字符串当前输入为一个字符“A”,输入n(n < 1000),输出最少需要经过多少步操作,才能得到n个“A”思路最先注意到,既然不能部分复制,那么也就是说,假如n是个质数,那么最少就需要n次操作(1次复制,n-1次粘贴)。那么将

码农a嘘的博客 950

[leetcode] 650. 2 Keys Keyboard

Description Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step: Copy All: You can copy all the characters present on the notepad (p...

Learning from the mistakes 232

leetcode 650. 2 Keys Keyboard

Initially on a notepad only one character 'A' is present. You can perform two operations on this notepad for each step: Copy All: You can copy all the characters present on the notepad (partial c

淡然坊 393

LeetCode 650 Keys Keyboard

最初在一个记事本上只有一个字符 'A'。你每次可以对这个记事本进行两种操作: Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。 Paste (粘贴) : 你可以粘贴你上一次复制的字符。 给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 'A'。输出能够打印出 n 个 'A' 的最少操作次数。 示例 1...

qq_39904393的博客 223

[leetcode]650. 2 Keys Keyboard

[leetcode]650. 2 Keys Keyboard Analysis 唉—— [每天刷题并不难0.0] Initially on a notepad only one character ‘A’ is present. You can perform two operations on this notepad for each step: Copy All: You can c...

weixin_32135877的博客 280
上一篇: LeetCode 198. House Robber 213. House Robber II--动态规划
下一篇: LeetCode 312. Burst Balloons--动态规划
monkey_rose
博客等级 码龄10年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值