剑指Offer 14- II. 剪绳子 II(Medium)
343. 整数拆分(Medium)

【题目连接】

题解

  1. 剪绳子(数学推导 / 贪心思想,清晰图解)
  2. 图解【暴力递归】【记忆化技术】【动态规划】【动态规划优化解法】

思路

  1. 数学方法【均值不等式 + 函数求极值】


  2. 记忆化递归


3. 动态规划


4. 动态规划空间优化

代码

class Solution(object):### 0909 记忆化递归(20 ms,12.7 MB)def cuttingRope(self, n):""":type n: int:rtype: int"""def memorize(n):## 递归终止条件if n == 2:return 1## 若当前子问题已计算,则直接返回其结果if f[n] != 0:return f[n]## 临时变量res用于暂存剩余的绳子(数组)res = -1## i表示需要剪掉多长的绳子,其长度从1到nfor i in range(1, n+1):## 判断是否需要剪掉?## res:表示不继续剪掉## i*(n-i):表示n剪掉i之后,不再剪了,直接和i相乘## i*memorize(n-i):表示n剪掉i之后,继续剪(得到子问题),计算完成后再和i相乘res = max(res, max(i*(n-i), i*memorize(n-i)))## 当前f数组的最后一位用于存放前面(子)问题的最大值(最优结果)f[n] = resreturn f[n]## 初始化f数组(0),其长度为n+1,最后一位用于存放前面(子)问题的最大值(最优结果)f = [0] * (n+1)return memorize(n)### 0909 动态规划(24 ms,12.9 MB)def cuttingRope(self, n):dp = [0] * (n+1)dp[2] = 1## i从3到nfor i in range(3, n+1):for j in range(1, i):## 判断是否需要剪掉?dp[i] = max(dp[i], max(j*(i-j), j*dp[i-j]))## 返回数组的最后一个元素return dp[n]### 0909 数学方法【均值不等式 + 求极值】(4 ms,12.8 MB)import mathdef cuttingRope(self, n):if n <= 3:return n - 1a, b = n // 3, n % 3## 若整除,则直接计算if b == 0:return int(math.pow(3, a))## 若余1,则拆分一个3,将1和3转换为2*2elif b == 1:return int(math.pow(3, a-1)) * 2 * 2## 若余2,则不拆分,直接计算else:return int(math.pow(3, a)) * 2

剑指Offer 14- I. 剪绳子(Medium)/ 剪绳子 II(Medium)/ 343. 整数拆分(Medium)相关推荐

  1. 【LeetCode】剑指 Offer 14. 剪绳子

    [LeetCode]剑指 Offer 14. 剪绳子 文章目录 [LeetCode]剑指 Offer 14. 剪绳子 两道题目的区别在于第二题 n 的取值范围更大 package offer;publ ...

  2. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...

  3. 剑指 Offer 14.剪绳子(动态规划、数学分析)

    一.题目内容 二.题目分析 这道题目讲道理,我看到的第一眼就是动态规划,但是后来提交之后,发现还有大佬考虑用数学分析得出精简解法,在这里我也会一 一阐述. 对于动态规划而言,按照老套路,首先定义dp数 ...

  4. 【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)

    文章目录 剪绳子 I 题目描述 思路 && 代码 1. 动态规划 O(n2n^2n2).O(n) 2. 最优解:数学方法 O(n).O(1) 二刷 剪绳子 II 题目描述 思路 &am ...

  5. 【剑指offer】面试题14- I:剪绳子(Java)

    给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] .请问 k[0]*k[1]*...*k ...

  6. 剑指Offer算法笔记(Java)剪绳子

    11.剪绳子 描述 给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m . n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1 ...

  7. 《剑指offer》第四十三题(从1到n整数中1出现的次数)

    // 面试题43:从1到n整数中1出现的次数 // 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如 // 输入12,从1到12这些整数中包含1 的数字有1,10,11和12 ...

  8. 剑指offer刷题笔记

    最近LeetCode上的<剑指offer>的题刷的差不多了,只剩几道无聊的题了.现在把做题过程中的记录放在这里,作为将来查看的笔记,也同时欢迎大家指出其中的不当之处(QQ).虽然博主现在仍 ...

  9. 剑指offer刷题笔记-篇2

    文章目录 剑指offer 前言 机器人的运动范围 剪绳子 二进制中1的个数 数值的整数次方 从1到n的位数 移除链表元素 删除链表中重复的结点 *正则表达式匹配 *表示数值的字符串 调整数组顺序 链表 ...

  10. Leetcode剑指offer(五)

    Leetcode剑指offer 31从上到下打印二叉树 II(32-2.Easy) 1)题目要求 2)我的解法 3)其他解法 4)自己的优化代码 5)学到的东西 32.从上到下打印二叉树 III(32 ...

最新文章

  1. 第7章 PCA与梯度上升法
  2. Winform中使用printDocument控件打印pictureBox中的二维码照片
  3. matlab 的均值t检验,用MATLAB做T检验(ttest)
  4. 记录ishield遇到的问题的解决过程
  5. sklearn的认识
  6. 自定义检验注解_多注解自定义参数校验
  7. linux ssh端口是否打开,如何查看linux中的ssh端口开启状态
  8. Excel中 ColorIndex 属性值和颜色对照表
  9. python--时间日期
  10. java后端开发需要学什么知识点(JAVA难学吗)
  11. 港口信息化、智能化、自动化产品设计想法---5
  12. iconfont下载的本地文件的ttf、woff、woff2转换成base64位后引入iconfont.css使用
  13. 用Python绘制一个简单的奥运五环
  14. 期货卖出平仓价和买入平仓价(期货平仓价和结算价)
  15. MySQL-次日留存率问题
  16. 为你的YOLOv5任意版本添加Grad-CAM等热图可视化
  17. 国民技术 MCU JLink仿真调试环境配置
  18. 我的大学 --- 郭天祥【4】
  19. 【深度学习kears+tensorflow】电影评论分类:二分类问题
  20. 深度暗色调色效果Lr预设

热门文章

  1. 【Java设计模式 规范与重构】 一 重构的目的、内容、时机、方法
  2. FZU-2253(咸鱼翻身)
  3. win7字体安装_三维动画渲染制作软件Maya2015下载和安装
  4. Android开发--SurfaceView的基本用法
  5. 计算机发展史上最著名的两位鼻祖
  6. MySQL高级篇——字符集、大小写规范和sql_mode
  7. 名画386 张大千《扇面六幅》
  8. 归并La和Lb得到新的线性表Lc
  9. 卡尔曼滤波系列1——卡尔曼滤波
  10. PID控制原理基本介绍(图解)