【LeetCode】剑指 Offer 14. 剪绳子
【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. 剪绳子相关推荐
- 【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)
文章目录 剪绳子 I 题目描述 思路 && 代码 1. 动态规划 O(n2n^2n2).O(n) 2. 最优解:数学方法 O(n).O(1) 二刷 剪绳子 II 题目描述 思路 &am ...
- 剑指 Offer 14.剪绳子(动态规划、数学分析)
一.题目内容 二.题目分析 这道题目讲道理,我看到的第一眼就是动态规划,但是后来提交之后,发现还有大佬考虑用数学分析得出精简解法,在这里我也会一 一阐述. 对于动态规划而言,按照老套路,首先定义dp数 ...
- 88. Leetcode 剑指 Offer 14- I. 剪绳子 (动态规划-基础题)
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] .请问 k[0]*k[1]*... ...
- 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 ...
- 152. Leetcode 剑指 Offer 14- II. 剪绳子 II (贪心算法-基础题目)
class Solution:def cuttingRope(self, n: int) -> int:if n < 4:return n - 1res = 1while n > 4 ...
- 151. Leetcode 剑指 Offer 14- I. 剪绳子 (贪心算法-基础题目)
class Solution:def cuttingRope(self, n: int) -> int:if n <= 3:return n-1a, b = n // 3, n % 3if ...
- 每日一道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 ...
- 剑指 Offer 14- II. 剪绳子 II
剑指 Offer 14- II. 剪绳子 II 题目描述 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m.n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[ ...
- 剑指Offer 14- I. 剪绳子(Medium)/ 剪绳子 II(Medium)/ 343. 整数拆分(Medium)
剑指Offer 14- II. 剪绳子 II(Medium) 343. 整数拆分(Medium) [题目连接] 题解 剪绳子(数学推导 / 贪心思想,清晰图解) 图解[暴力递归][记忆化技术][动态规 ...
最新文章
- 电脑前面的插孔没声音怎么设置_手机没声音是怎么回事
- ORACEL游标的使用实例
- Android项目之——Activity悬浮并可拖动
- 内存首地址为1000h_C++虚继承,菱形继承,内存分布
- MongoDB 语法和mysql语法对比学习
- 华容道游戏开发--android小组
- java字符串排序_对字符串排序持一种宽容的心态
- java自己实现ioc_springioc原理、springmvc项目分析、自己实现IOC
- linux-2.6.38 input子系统(用输入子系统实现按键操作)
- centos7 通过kvm+vnc 实现远程桌面虚拟化和创建windows、Linux虚拟机
- 反射 数据类型_C#扫盲篇(一):反射机制情真意切的说
- 由遍历集合所联想到的一些问题
- 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题
- 有关字符串的算法(KMP,Manacher,BM)陆续补充
- 微信发红包的测试用例
- monkey压力测试命令
- 敏捷概念.Stacey矩阵
- 从零开始制作一款打卡类小程序
- vs2017旗舰版_2017年的所有旗舰手机都有明显的妥协。 这是他们告诉我们有关设计的信息。...
- 【全网最暴力解决方案】使用gdb调试时遭遇“Missing separate debuginfos, use: debuginfo-install glibc....”报错信息