
剑指 Offer 14- I 剪绳子(数学推导)
发布日期:2021-05-07 21:57:05
浏览次数:13
分类:技术文章
本文共 762 字,大约阅读时间需要 2 分钟。
1. 问题描述:
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
示例 1:
输入: 2
输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1示例 2:
输入: 10
输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36提示:
2 <= n <= 58
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof2. 思路分析:
一开始的时候没有啥思路,看了力扣的精选题解之后发现真的是秒啊,可以使用数学推导或者是贪心的思路解决,其实分析题目可以发现题目中存在着一个明显的数学关系所以使用数学推导的思路去解决也不难理解,其中力扣中的精选题解对于数学推导的思路讲的是很清楚的,主要是求导得到乘积的最大值,
3. 代码如下:
class Solution: def integerBreak(self, n: int) -> int: if n <= 3: return n - 1 a, b = n // 3, n % 3 if b == 0: return int(math.pow(3, a)) if b == 1: return int(math.pow(3, a - 1) * 4) return int(math.pow(3, a) * 2)
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月05日 17时41分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剑指offer JZ21 栈的压入弹出序列
2019-03-04
Netty4服务端入门代码示例
2019-03-04
VL53L0x TOF激光测距的 stm32 HAL库驱动代码
2019-03-04
自定义标签(JSP2.0)简单标签
2019-03-04
MyBatis自定义类型转换器
2019-03-04
Python:函数 ----》装饰器函数
2019-03-04
Python:面向对象
2019-03-04
Spring源码:prepareBeanFactory(beanFactory);方法
2019-03-04
Spring源码:initApplicationEventMulticaster源码解析
2019-03-04
AcWing 786: 第k个数
2019-03-04
AcWing 828. 模拟栈
2019-03-04
添加Selinux权限
2019-03-04
ifconfig网络配置信息解析
2019-03-04
(2019.9.10测试可用)如何在Windows的cmd中使用ls命令
2019-03-04
债券中的久期是什么意思
2019-03-04
(20200328已解决)从docker容器内复制文件到宿主机
2019-03-04
理解Docker ulimit参数
2019-03-04
理解Python系统下的时间格式
2019-03-04
Python语言'类'概念再理解
2019-03-04