欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

LintCode 183.木材加工

发布时间:2023/12/8 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 LintCode 183.木材加工 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。给定L和k,你需要计算能够得到的小段木头的最大长度。

二分法
小段木头的长度区间为[0,最长的那根木头]
对长度区间进行二分 判断mid长度是否可以用现有木头分成k段
若可以分成k段 说明小段木头可能更长 删除比mid短的区间 反之同理

public class Solution {/*** @param L: Given n pieces of wood with length L[i]* @param k: An integer* @return: The maximum length of the small pieces*/public int woodCut(int[] L, int k) {int l = 0;int r = 0;if(L == null || L.length == 0)return 0;for(int num : L){r = Math.max(r, num);}while(l + 1 < r){int mid = l + (r - l) / 2;if(count(L, mid) >= k){l = mid;}elser = mid;}if(count(L, r) == k)return r;return l;}public int count(int[] L, int len){int count = 0;for(int num : L){count += num / len;}return count;} }

总结

以上是生活随笔为你收集整理的LintCode 183.木材加工的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。