Java 载客船只的最低数量
第i个人有重量人[i],每艘船可承载的最大重量限制为 每艘船同时最多可载2人,前提是这些人的重量之和不超过极限 返回承载每个给定人员的最小船数。(保证每个人都可以乘船。) 例1: 输入:人员=[1,2],限制=3Java 载客船只的最低数量,java,algorithm,Java,Algorithm,第i个人有重量人[i],每艘船可承载的最大重量限制为 每艘船同时最多可载2人,前提是这些人的重量之和不超过极限 返回承载每个给定人员的最小船数。(保证每个人都可以乘船。) 例1: 输入:人员=[1,2],限制=3 输出:1 说明:1艘船(1,2) 例2: 输入:人员=[3,2,2,1],限制=3 输出:3 说明:3艘船(1、2)、(2)和(3) 例3: 输入:人员=[3,5,3,4],限制=5 输出:4 说明:4艘船(3)、(3)、(4)、(5) 对于第二个示例,我得到了错误的输出 获得输出2而
输出:1
说明:1艘船(1,2) 例2: 输入:人员=[3,2,2,1],限制=3
输出:3
说明:3艘船(1、2)、(2)和(3) 例3: 输入:人员=[3,5,3,4],限制=5
输出:4
说明:4艘船(3)、(3)、(4)、(5) 对于第二个示例,我得到了错误的输出 获得输出2而不是输出3 我的代码怎么了 我希望代码是这样的
class Solution {
public int numRescueBoats(int[] people, int limit) {
int count = 0;
int i;
int j = people.length - 1;
Arrays.sort(people);
for (i = 0; i < j; i++) {
if (people[i] + people[j] <= limit) {
i++;
j--;
} else {
j--;
}
count++;
}
return count;
}
}
类解决方案{
公共整数艘(整数[]人,整数限制){
整数计数=0;
int i;
int j=人。长度-1;
数组。排序(人);
对于(i=0;iif
中增加了i
两次,在successfulif
中增加了一次。您应该删除i++
for语句中的
2) 您不需要检查最后一个人-将(i=0;i更改为(i=0;i将您的循环部分替换为以下内容:
for (i = 0; i < j; ) {
if (people[i] + people[j] <= limit) {
i++;
j--;
}
else {
j--;
}
count++;
}
(i=0;i{
如果(人物[i]+人物[j]我建议你编辑你的标题,因为标题非常笼统,完成了……请回答……对我来说,你的逻辑不正确,人物[i]+人物[j]另外,请阅读我们都希望遵循的Stackoverflow。您是该网站的新用户,虽然很容易认为您知道如何撰写帖子,因为您已经年复一年地阅读了这些帖子,但在发布问题时,仍然有一些政策供您遵循。您向真实的人寻求帮助,所以请通过r帮助他们帮助您E记住SO政策,并在提问时遵循这些政策。我们有这些政策,因为就SO提问不仅仅是“为了你”,而是为了所有希望找到这个问题答案的人。它如何在不检查单个权重的情况下工作,你能解释@Naveen Verma类解决方案吗{public int numrescuebots(int[]people,int limit){int count=0;int i=0;int j=people.length-1;Arrays.sort(people);while(iIt)在对OP的输入进行排序后,当我在OP的输入上运行它时,它给出了错误的结果。请检查您的代码,或者将完整的代码作为答案发布,我将检查,@madsuff`class Solution{public int numrescuebots(int[]人,int限制){int count=0;int i=0;int j=people.length-1;array.sort(人);while(i)