Lintcode183 Wood Cut solution 题解

【题目描述】

Given n pieces of wood with lengthL[i](integer array). Cut them into small pieces to guarantee you could have equal or more than k pieces with the same length. What is the longest length you can get from the n pieces of wood? Given L & k, return the maximum length of the small pieces.

有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。

【注】:木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少k段的,则返回0即可。

【题目链接】

www.lintcode.com/en/problem/wood-cut/

【题目解析】

这道题要直接想到二分搜素其实不容易,但是看到题中 Challenge 的提示后你大概就能想到往二分搜索上靠了。

首先来分析下题意,题目意思是说给出 n 段木材L[i], 将这 n 段木材切分为至少 k 段,这 k 段等长,求能从 n 段原材料中获得的最长单段木材长度。以 k=7 为例,要将 L 中的原材料分为7段,能得到的最大单段长度为114, 232/114 = 2, 124/114 = 1, 456/114 = 4, 2 + 1 + 4 = 7.

理清题意后我们就来想想如何用算法的形式表示出来,显然在计算如2,1,4等分片数时我们进行了取整运算,在计算机中则可以使用下式表示: ∑​i=1​n​​​l​​L[i]​​≥k

其中 l 为单段最大长度,显然有 1≤l≤max(L[i]). 单段长度最小为1,最大不可能超过给定原材料中的最大木材长度。

【参考答案】

www.jiuzhang.com/solutions/wood-cut/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 13,002评论 0 33
  • sì 支zhī茶chá 对duì 酒jiǔ,赋fù 对duì 诗shī,燕yàn子zi 对duì 莺yīng 儿é...
    每个人的孟母堂阅读 1,513评论 0 6
  • 这是一篇萦怀于心而又一直不敢动笔的文章,是心中绷得太紧以至于怕轻轻一抚就砉然断裂的弦丝,却又恍若巨石在喉。可是不写...
    艾沄0322阅读 348评论 0 0
  • 我们思考一个活生生的个体的命运时,不能像思考一个群体那样大而化之。 每个个体的情况都十分复杂,面临同样的环境,不同...
    东方佳木阅读 645评论 1 4
  • 兹证明我村《大山畜禽养殖专业合作社》,座落于白塔畈镇项冲村,捅有办公占地面积300平方米,畜禽建筑面积3000平方...
    小镇名家阅读 205评论 0 0

友情链接更多精彩内容