LeetCode刷题之650.只有两个键的键盘

LeetCode刷题之650.只有两个键的键盘

我不知道将去向何方,但我已在路上!
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 !
  • 题目
    最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:
    1.Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。
    2.Paste (粘贴) : 你可以粘贴你上一次复制的字符。 给定一个数字 n 。
    你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。
  • 示例
输入: 3
输出: 3
解释:
最初, 我们只有一个字符 'A'。
第 1 步, 我们使用 Copy All 操作。
第 2 步, 我们使用 Paste 操作来获得 'AA'。
第 3 步, 我们使用 Paste 操作来获得 'AAA'。
  • 说明
    1. n 的取值范围是 [1, 1000]。
  • 代码:
class Solution:
    def minSteps(self, n: int) -> int:
        result = 0
        a = 2
        while n > 1:
            while n % a == 0:
                result += a
                n = n / a
            a = a + 1
        return result
# 执行用时 :48 ms, 在所有 Python3 提交中击败了90.73%的用户
# 内存消耗 :13.9 MB, 在所有 Python3 提交中击败了6.25%的用户
  • 算法说明:
    如果n是质数,则只能一个一个的复制得到,而且一个数分解成质因数相乘后,加和是最小的,因此只要求出n的所有质因数之和即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

O_胡萝卜_O

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

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

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

打赏作者

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

抵扣说明:

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

余额充值