Redian新闻
>
请教大拿们一个算法问题
avatar
请教大拿们一个算法问题# JobHunting - 待字闺中
p*l
1
一个长度为M非负整数的集合,劈成N个集合,要求这N个集合的和的最大值最小。
比如 (3,4,5,6),n=3, 结果应该是 ((3,4),(5),(6))
avatar
p*2
2
int groups(int[] nums, int sum) {
int count = 1;
int s = 0;

for(int i : nums) {
s += i;
if(s > sum) {
count++;
s = i;
}
}

return count;
}

public int splitArray(int[] nums, int m) {
int x = 0;
int y = 0;
for(int i : nums) {
x = Math.max(x, i);
y += i;
}

while(x <= y) {
int mid = x+(y-x)/2;
int groups = groups(nums, mid);
if(groups <= m) {
y = mid-1;
}
else {
x = mid+1;
}
}

return x;
}
avatar
p*l
3
你这里是不是假设分割数组是连续的? 这道题目没有这个假设。
比如 【2 ,5 , 5, 8 】 n =2 , 可以分割成 【2,8】, 【5,5】
没有必要非得是 【2,5,5】, 【8】

【在 p*****2 的大作中提到】
: int groups(int[] nums, int sum) {
: int count = 1;
: int s = 0;
:
: for(int i : nums) {
: s += i;
: if(s > sum) {
: count++;
: s = i;
: }

avatar
y*u
5
大神 赞赞赞!

【在 p*****2 的大作中提到】
: int groups(int[] nums, int sum) {
: int count = 1;
: int s = 0;
:
: for(int i : nums) {
: s += i;
: if(s > sum) {
: count++;
: s = i;
: }

avatar
p*2
6

做的不对也赞?
大神给我们来一个吧。

【在 y**********u 的大作中提到】
: 大神 赞赞赞!
avatar
T*e
7
每次都敢直接贴码就说明你艺高人胆大。
而且楼主的第一个贴子和例子确实容易产生歧义,我只看第一帖也会以为是二分。
楼主澄清后,你的解法就算不是最优,也不完全作废。可以外面加一层全排列,
学习的价值并不比没有证明的greedy差。


【在 p*****2 的大作中提到】
:
: 做的不对也赞?
: 大神给我们来一个吧。

avatar
p*2
8

大牛总结的真好

【在 T*******e 的大作中提到】
: 每次都敢直接贴码就说明你艺高人胆大。
: 而且楼主的第一个贴子和例子确实容易产生歧义,我只看第一帖也会以为是二分。
: 楼主澄清后,你的解法就算不是最优,也不完全作废。可以外面加一层全排列,
: 学习的价值并不比没有证明的greedy差。
:

avatar
T*e
9
惭愧。谈算法,我这个小虾米最多只能马后炮。

【在 p*****2 的大作中提到】
:
: 大牛总结的真好

avatar
m*s
10
leetcode原题
binary search
avatar
y*u
11
我就看连续的,没问题啊

【在 p*****2 的大作中提到】
:
: 大牛总结的真好

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。