/**
* NOTE: 有一條馬路,馬路上有很多樹,樹的高度不一。現(xiàn)在要統(tǒng)一剪樹,剪到高度為 h。
* 意思就是,比 h 高的樹都剪到 h,比 h 低的樹高度不變。
* 所有的樹剪掉的總長度為 C。 現(xiàn)在要使 C > 某個值的情況下(假設為 MM),使 h 最大。問怎么確定 h。
*/
// NOTE: 樹枝
const tree = [10, 3, 2, 21, 8, 19, 7, 11]
/**
*
* @param {樹枝的集合} tree
* @param {剪樹枝的總長度} c
* @param {每次剪多長} range
*/
function cutTree(tree, c, range) {
if (tree.length === 0) {
return 0
}
let start = 0
let end = Math.max(...tree)
while (start <= end) {
// 每次都取中間
const mid = start + ((end - start) >> 1)
// console.log(mid)
let h = 0
for (let i = 0; i < tree.length; i++) {
// 挑選出大于 mid 的數(shù)
if (tree[i] > mid) {
h = h + tree[i] - mid
}
}
if (h > c) {
if (h - c <= range) {
return mid
}
// 剪 range
end = end - range
} else {
start = start + range
}
}
return -1;
}
const res = cutTree(tree, 12, 1)
console.log(res)
const a = cutTree([10, 8, 9, 7, 7, 6], 16, 1);
const b = cutTree([10, 8, 9, 7, 7, 6], 20, 1);
const c = cutTree([10, 8, 9, 7, 7, 6], 15, 1);
// console.log(a, b, c);
剪樹枝
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 活在鋼筋水泥的大城市,偶爾能有一天休息只想在家茍延殘喘。 瀏覽一下朋友圈朋友們秀出某名森林的風景,點上一個無奈的贊...