【LeetCode】剑指 Offer 14. 剪绳子

文章目录

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

两道题目的区别在于第二题 n 的取值范围更大

package offer;public class Solution14 {public static void main(String[] args) {int n = 100;Solution14 solution = new Solution14();System.out.println(solution.method1(n));System.out.println(solution.method2(n));}private int method1(int n){if(n <= 3) return n - 1;int a = n / 3;int b = 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;}private int method2(int n){if(n <= 3) return n - 1;int b = n % 3, p = 1000000007;long rem = 1;long x = 3;for(int a = n / 3 - 1; a > 0; a /= 2){if(a % 2 == 1) rem = (rem * x) % p;x = (x * x) % p;}if(b == 0) return (int)(rem * 3 % p);if(b == 1) return (int)(rem * 4 % p);return (int)(rem * 6 % p);}
}//method1
//时间复杂度为 O(1)
//空间复杂度为 O(1)
//method2
//时间复杂度为 O(log2n),二分法为对数级复杂度
//空间复杂度为 O(1)

【LeetCode】剑指 Offer 14. 剪绳子相关推荐

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

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

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

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

  3. 88. Leetcode 剑指 Offer 14- I. 剪绳子 (动态规划-基础题)

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

  4. leetcode剑指 Offer 14- I. 剪绳子(动态规划)

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

  5. 152. Leetcode 剑指 Offer 14- II. 剪绳子 II (贪心算法-基础题目)

    class Solution:def cuttingRope(self, n: int) -> int:if n < 4:return n - 1res = 1while n > 4 ...

  6. 151. Leetcode 剑指 Offer 14- I. 剪绳子 (贪心算法-基础题目)

    class Solution:def cuttingRope(self, n: int) -> int:if n <= 3:return n-1a, b = n // 3, n % 3if ...

  7. 每日一道Leetcode - 剑指 Offer 14- I. 剪绳子【动态规划】

    class Solution {public int cuttingRope(int n) {int[] dp = new int[n+1];for(int i = 2;i<=n;i++){fo ...

  8. 剑指 Offer 14- II. 剪绳子 II

    剑指 Offer 14- II. 剪绳子 II 题目描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[ ...

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

    剑指Offer 14- II. 剪绳子 II(Medium) 343. 整数拆分(Medium) [题目连接] 题解 剪绳子(数学推导 / 贪心思想,清晰图解) 图解[暴力递归][记忆化技术][动态规 ...

最新文章

  1. 电脑前面的插孔没声音怎么设置_手机没声音是怎么回事
  2. ORACEL游标的使用实例
  3. Android项目之——Activity悬浮并可拖动
  4. 内存首地址为1000h_C++虚继承,菱形继承,内存分布
  5. MongoDB 语法和mysql语法对比学习
  6. 华容道游戏开发--android小组
  7. java字符串排序_对字符串排序持一种宽容的心态
  8. java自己实现ioc_springioc原理、springmvc项目分析、自己实现IOC
  9. linux-2.6.38 input子系统(用输入子系统实现按键操作)
  10. centos7 通过kvm+vnc 实现远程桌面虚拟化和创建windows、Linux虚拟机
  11. 反射 数据类型_C#扫盲篇(一):反射机制情真意切的说
  12. 由遍历集合所联想到的一些问题
  13. 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题
  14. 有关字符串的算法(KMP,Manacher,BM)陆续补充
  15. 微信发红包的测试用例
  16. monkey压力测试命令
  17. 敏捷概念.Stacey矩阵
  18. 从零开始制作一款打卡类小程序
  19. vs2017旗舰版_2017年的所有旗舰手机都有明显的妥协。 这是他们告诉我们有关设计的信息。...
  20. 【全网最暴力解决方案】使用gdb调试时遭遇“Missing separate debuginfos, use: debuginfo-install glibc....”报错信息

热门文章

  1. python未来人工智能主流_python深度学习,未来人工智能三大境界的划分
  2. 一些知名的J2me优秀开源UI项目
  3. Java抓取Codeforces——针对某一次提交的源码和数据
  4. Win 10 Revit 2019 安装过程,亲自踩的一遍坑,有你想要的细节
  5. Jmeter响应断言介绍
  6. 【FileOutputStream类:文档中的换行与追加】
  7. D: Starry的神奇魔法(矩阵快速幂)
  8. java中初始化块、静态初始化块和构造方法
  9. Android 手机卫士--解析json与消息机制发送不同类型消息
  10. HDU1233——还是通常工程(最小生成树,并查集)