原木加工
有一些原木,現(xiàn)在想把這些木頭切割成一些長(zhǎng)度相同的小段木頭,需要得到的小段的數(shù)目至少為?k。當(dāng)然,我們希望得到的小段越長(zhǎng)越好,你需要計(jì)算能夠得到的小段木頭的最大長(zhǎng)度。
?注意事項(xiàng)
木頭長(zhǎng)度的單位是厘米。原木的長(zhǎng)度都是正整數(shù),我們要求切割得到的小段木頭的長(zhǎng)度也要求是整數(shù)。無(wú)法切出要求至少?k?段的,則返回?0?即可。
class Solution { public:/** @param L: Given n pieces of wood with length L[i]* @param k: An integer* @return: The maximum length of the small pieces*/int woodCut(vector<int> &L, int k) {// write your code hereif (L.size() == 0) {return 0;}// always keep in mind that overbufferlong long sum = L[0];int max = L[0];for (int i = 1; i < L.size(); i++) {sum += L[i];if (max < L[i]) {max = L[i];}}if (k > sum) {return 0;}int min = 1;while (min < max) {int mid = min + (max - min) / 2;int count = 0;for (int i = 0; i < L.size(); i++) {// mid is the expected number, not kcount += (L[i] / mid);}if (count >= k) {min = mid + 1;} else {max = mid;}}return min - 1;} };
總結(jié)
- 上一篇: 智多星大数据分析云平台实践
- 下一篇: 十分详细的diff算法原理解析