博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
刷题笔记(18)--剪绳子II(贪心)
阅读量:3957 次
发布时间:2019-05-24

本文共 633 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

这题和前面的剪绳子 n 的取值范围不同,涉及到了大数会越界的问题,需要每次都对其取余。

  • n = 2时,特殊解为1 * 1 = 1;n = 3时,特殊解为 1 * 2 = 2;n=4 , 2 * 2=4;
  • n > 4时,最优解应该是包含尽可能多的长度为 3 的子绳。例如 n = 6 ,最优解为3 * 3,而不是2 * 2 * 2;
  • 使用 long 存储结果还不够,还需要做到每次的中间结果都取余。
class Solution {
public int cuttingRope(int n) {
// 对于 2 3 返回 1 和 2是特殊解 if(n <= 3) return n-1; // res 使用 long 防止中间结果取余后过大 long res = 1; // 对 长度大于4的,尽可能分解多的长度3 while(n > 4){
res *= 3; // 每步都要取余,防止中间结果超出 long 取值范围 res = res % 1000000007; n -= 3; } // 最后对 long 转换类型,依然要取余。 return (int)(res * n % 1000000007); }}

转载地址:http://bpozi.baihongyu.com/

你可能感兴趣的文章
序列S的所有可能情况
查看>>
在Linux上用pip安装scipy
查看>>
随机salt二次加密及hash加密漫谈
查看>>
linux 技巧:使用 screen 管理你的远程会话
查看>>
同时装了Python3和Python2,怎么用pip?
查看>>
linux tar 解压缩zip文件报错的解决
查看>>
vim,ctag和Taglist
查看>>
Ubuntu的apt命令详解
查看>>
Ubuntu Server 设置sshd
查看>>
sort,uniq命令的使用。
查看>>
linux下md5加密(使用openssl库C实现)
查看>>
openssl、MD5的linux安装方法
查看>>
DevC++ 工程没有调试信息的解决办法
查看>>
http消息长度的确定
查看>>
手机和电脑如何连接蓝牙
查看>>
HTTP协议参数
查看>>
wireshark检索命令
查看>>
五人分鱼问题(附答案)
查看>>
linux查看文件有多少行
查看>>
error:previous declartion of "XXX" is here的解决方法
查看>>