剑指 Offer 14- II. 剪绳子 II + 贪心 + 数论 + 快速幂
剑指 Offer 14- II. 剪绳子 II
题目链接
因为有取模的操作,动态规划中max不能用了,我们观察:正整数从1开始,但是1不能拆分成两个正整数之和,所以不能当输入。
2只能拆成 1+1,所以乘积也为1。
数字3可以拆分成 2+1 或 1+1+1,显然第一种拆分方法乘积大为2。
数字4拆成 2+2,乘积最大,为4。
数字5拆成 3+2,乘积最大,为6。
数字6拆成 3+3,乘积最大,为9。
数字7拆为 3+4,乘积最大,为 12。
数字8拆为 3+3+2,乘积最大,为 18。
数字9拆为 3+3+3,乘积最大,为 27。
数字10拆为 3+3+4,乘积最大,为 36。
那么通过观察上面的规律,我们可以看出从5开始,数字都需要先拆出所有的3,一直拆到剩下一个数为2或者4,因为剩4就不用再拆了,拆成两个2和不拆没有意义,而且4不能拆出一个3剩一个1,这样会比拆成 2+2 的乘积小。
package com.walegarrett.offer;
/**
* @Author WaleGarrett
* @Date 2020/12/10 18:56
*/
public class Offer_14_2 {
public int cuttingRope(int n) {
if(n ==2 || n == 3)
return n-1;
long ans = 1;
while(n > 4){
ans = ans * 3 % 1000000007;
n -= 3;
}
return (int)((ans * n) % 1000000007);
}
}
剑指 Offer 14- II. 剪绳子 II + 贪心 + 数论 + 快速幂的更多相关文章
- 【Python】剑指offer 14:剪绳子
题目:给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],-,k[m].请问k[0]k[1]-*k[m]可能的最大乘积是多少 ...
- 剑指offer 面试题. 剪绳子
题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x...xk[ ...
- 【Java】 剑指offer(14) 二进制中1的个数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把 ...
- 《剑指offer》面试题68 - II. 二叉树的最近公共祖先
问题描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...
- 《剑指offer》-青蛙跳台阶II
一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 其实题目很水...就是一个等比数列通项公式嘛 f(0)=1 f(1)=1 f(n)=f( ...
- 【剑指Offer】面试题32 - II. 从上到下打印二叉树 II
题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回 ...
- 《剑指offer》面试题32 - II. 从上到下打印二叉树 II
问题描述 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 ...
- 《剑指offer》面试题53 - II. 0~n-1中缺失的数字
问题描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字. 示例 1: 输入: [ ...
- 《剑指offer》面试题55 - II. 平衡二叉树
问题描述 输入一棵二叉树的根节点,判断该树是不是平衡二叉树.如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树. 示例 1: 给定二叉树 [3,9,20,null,null, ...
随机推荐
- python连接mysql数据库,并进行添加、查找数据
1.删除MySQL数据表中的记录 DELETE FROM table_name WHERE condition; python操作mysql1数据库 import pymysql # 连接mysql数 ...
- hdu2430Beans(单调队列)
Mr. Pote's shop sells beans now. He has N bags of beans in his warehouse, and he has numbered them ...
- Codeforces Round #649 (Div. 2) C、Ehab and Prefix MEXs D、Ehab's Last Corollary 找环和点染色
题目链接:C.Ehab and Prefix MEXs 题意; 有长度为n的数组a(下标从1开始),要求构造一个相同长度的数组b,使得b1,b2,....bi集合中没有出现过的最小的数是ai. mex ...
- Checkout Assistant CodeForces - 19B
题意: 给你n个物品,每个物品有一个价格ci和一个支付时间ti,在这个ti时间内,你可以免费拿ti个物品.问你想要带走这n个物品最小需要多少钱 题解: 原本还想着贪心去写,但是好像贪心写不了,,,不属 ...
- read()、readline()、readlines() -- Python
文本文件:readfile.txt 详细描述: read() #一次性读取文本中全部的内容,以字符串的形式返回结果 readline() #只读取 ...
- Tomcat基本原理
思考 :怎样让Tomcat具备Web服务的功能呢? 在服务端用HTTP来监听,协议不好写,不妨用Java封装好的Socket作为监听. class MyTomcat{ ServerSocket ser ...
- nodejs非安装版配置(windows)
nodejs官网下载地址: https://nodejs.org/en/download/ 解压到本地并配置环境变量 在环境变量path中新增 D:\develop\node 查看是否配置成功 至此n ...
- 渗透技巧——如何逃逸Linux的受限制shell执行任意命令
导语:本文介绍了如何在受限制的shell中执行任意命令,实现交互.其相应的利用场景是说当我们通过一些手段拿到当前Linux机器的shell时,由于当前shell的限制,很多命令不能执行,导致后续的渗透 ...
- 【情人节选帽子】TCS34725颜色传感器和Python图形界面编程(STM32 HAL库)
截图 描述: l STM32 HAL库编程 l 使用模拟IIC通信,方便程序移植 l Python界面编写,蘑菇头的帽子是什么颜色 l STM32 HAL库串口通信 l Python界面使用 ...
- Python+OpenCV+图片旋转并用原底色填充新四角
import cv2 from math import fabs, sin, cos, radians import numpy as np from scipy.stats import mode ...