题目大概描述:有一段木块长为n,每一块高为hi,现在想将此木块分为m块,求得他们最小高度之和例:输入 n=8 m=3 height={1,2,3,4,5,6,7,8} 输出 minheight = 11我后面去要了答案,给的是这个:将木板分成(1, 2, 3), (4, 5), (6, 7, 8)三块,高度之和最小为11。思路:这个问题可以使用二分查找和贪心算法来解决。首先可以找到最大和最小的高度,将它们设为left和right,然后二分查找出一个mid值,然后贪心地将木板切成m块,每块长度为mid,计算出所有小块的高度之和,将其与mid进行比较,如果小于等于mid,则将mid更新为right,否则将mid更新为left。重复上述过程,直到left和right相等,此时的值即为块的高度之和的最小值。代码实现:public int minTotalHeight(int n, int m, int[] heights) { int left = 1, right = 0; for (int h : heights) { right = Math.max(right, h); } while (left int mid = (left + right) / 2; int count = 0, sum = 0; for (int h : heights) { sum += h; if (sum > mid) { count++; sum = h; } } count++; if (count right = mid; } else { left = mid + 1; } } return left;}就感觉跟我理解的题目又完全不一样了,因为种种原因不敢去再细问,所以先来这边看能不能寻求答案