当前位置: 首页 > news >正文

网站建设时间计划表广州口碑好的网站建设定制

网站建设时间计划表,广州口碑好的网站建设定制,1688货源网一件代发拼多多,怎样在安装wordpress摘要 ​​​​​​剑指 Offer 14- I. 剪绳子 剑指 Offer 14- II. 剪绳子 II 343. 整数拆分 一、动态规划解析 这道题给定一个大于1的正整数n#xff0c;要求将n 拆分成至少两个正整数的和#xff0c;并使这些正整数的乘积最大化#xff0c;返回最大乘积。令x是拆分出的第…摘要 ​​​​​​剑指 Offer 14- I. 剪绳子 剑指 Offer 14- II. 剪绳子 II 343. 整数拆分 一、动态规划解析 这道题给定一个大于1的正整数n要求将n 拆分成至少两个正整数的和并使这些正整数的乘积最大化返回最大乘积。令x是拆分出的第一个正整数则剩下的部分是 n−xn−x可以不继续拆分或者继续拆分成至少两个正整数的和。由于每个正整数对应的最大乘积取决于比它小的正整数对应的最大乘积因此可以使用动态规划求解。 创建数组dp其中dp[i]表示将正整数i拆分成至少两个正整数的和之后这些正整数的最大乘积。特别地0不是正整数1是最小的正整数0和1都不能拆分因此 dp[0]dp[1]0。 当 i≥2时假设对正整数i拆分出的第一个正整数是 j(1≤ji则有以下两种方案 将i拆分成j 和i−j的和且i−j不再拆分成多个正整数此时的乘积是j×(i−j)将i拆分成j和i−j的和且i−j继续拆分成多个正整数此时的乘积是j×dp[i−j]。 因此当j固定时有 dp[i]max⁡(j×(i−j),j×dp[i−j])。由于j的取值范围是1到i−1需要遍历所有的j得到dp[i]的最大值因此可以得到状态转移方程如下dp[i]max(1≤ji)​{max(j×(i−j),j×dp[i−j])}。最终得到dp[n]的值即为将正整数n拆分成至少两个正整数的和之后这些正整数的最大乘积。 package DP;/*** Classname JZ14* Description TODO* Date 2023/3/1 21:34* Created by xjl*/ public class JZ14剪绳子 {public int cuttingRope(int n) {// 定义dp的数组 dp[0]dp[1]0int[] dp new int[n 1];for (int i 2; i n; i) {int curMax 0;for (int j 1; j i; j) {curMax Math.max(curMax, Math.max(j * (i - j), j * dp[i - j]));}dp[i] curMax;}return dp[n];} }复杂度分析 时间复杂度O(n^2)其中n是给定的正整数。对于从2到n的每一个整数都要计算对应的dp 值计算一个整数对应的 dp值需要O(n)的时间复杂度因此总时间复杂度是O(n^2)。空间复杂度O(n)其中n是给定的正整数。创建一个数组dp其长度为 n1 二、数学方法实现 设将长度为n的绳子切为a段nn1​n2​...na​题等价于求解max(n1​×n2​×...×na​)以下公式为“算术几何均值不等式” 等号当且仅当n1n2...na时成立。 算法流程 当n≤3时按照规则应不切分但由于题目要求必须剪成m1段因此必须剪出一段长度为1的绳子即返回 n−1。当n3时求n除以3的 整数部分a和余数部分b 即n3ab并分为以下三种情况      当 b0时直接返回3a      当 b1时要将一个 13转换为 22因此返回 3a−1×4      当 b2时返回 3a×2。class Solution {public int cuttingRope(int n) {if(n 3) return n - 1;int a n / 3, 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;} } 三、大数越界情况下的求余问题 此题与剪绳子主体等价唯一不同在于本题目涉及 “大数越界情况下的求余问题” 。 切分规则 最优3。把绳子尽可能切为多个长度为3的片段最后一段绳子长度可能为0,1,2三种情况。次优2。若最后一段绳子长度为2 则保留不再拆为 11 。最差1。若最后一段绳子长度为1 则应把一份31替换为 22因为 2×23×1。 算法流程 当n≤3时按照规则应不切分但由于题目要求必须剪成m1段因此必须剪出一段长度为1的绳子即返回n−1。 当n3时求n除以 3的整数部分a和余数部分b 即 n3ab 并分为以下三种情况设求余操作符号为 ⊙ 当 b0时直接返回 3a⊙1000000007当 b1时要将一个 13转换为 22因此返回 (3a−1×4)⊙1000000007当 b2时返回 (3a×2)⊙1000000007。大数求余解法 大数越界当a增大时最后返回的3a大小以指数级别增长可能超出int32 甚至int64 的取值范围导致返回值错误。大数求余问题 在仅使用int32 类型存储的前提下正确计算xa对p求余即 xa⊙p的值。解决方案 循环求余、快速幂求余 其中后者的时间复杂度更低两种方法均基于以下求余运算规则推出(xy)⊙p[(x⊙p)(y⊙p)]⊙p class Solution {public int cuttingRope(int n) {if(n 3) return n - 1;int b n % 3, p 1000000007;long rem 1, 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);} } 博文参考 《leetcode》
http://www.hkea.cn/news/14259242/

相关文章:

  • 网站建设开源模板网站开发的未来发展趋势
  • 公司网站建设企业关于网站建设的专家研讨会
  • 视觉中国网站住房和建设部信息网站
  • 新品销售网站建设广州哪家网站建设最好
  • 剪辑素材网站莱芜都市网帖子怎么删除
  • 从化手机网站建设wordpress 版权
  • 大公司网站色彩设计郑州网络安全科技馆
  • 网站建设信息安全要求服务器云平台
  • 网站建设新际平台门户建设
  • 宁波市住房和城乡建设局网站首页团购网站设计
  • 网站建设服务亮点信息类网站
  • 网页兼容性 网站开发wordpress添加数据库文件
  • o2o网站源码app宝安沙井房价
  • 开网站制作公司广东汕头网络科技有限公司
  • 广西网站建设策划网站建设质量体系审核指导
  • 爱站网查询东莞网站建设报价 一呼百应
  • 网站内链 外链做网站运营有前景么
  • 贵州城乡住房和建设厅网站响应式网站的意义
  • 收费的网站怎么做的做微信扫码网站
  • 目前市面上做网站的程序微信公众账号登录官网
  • 360 的网站链接怎么做网络基础培训
  • 怎么把做的页面放到网站上唐山手机网站建设
  • 哪个网站可做密丸男科医院网站建设公司
  • 在线做h5 的网站wordpress插件破解下载
  • 简单的手机网站模板下载安装怎么做网页excel
  • 网站的建设书籍安阳做网站的费用
  • 珠宝网站策划书趣夜传媒
  • 铆钉机 东莞网站建设想做分销商有什么平台
  • 商城网站建设特点有哪些郑州哪家做网站便宜
  • 比较好的外贸网站wordpress管理微信公众号