失败了一个简单的HackerRank问题,没有在线学习的方法,请帮助我修复简单但错误的算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了失败了一个简单的HackerRank问题,没有在线学习的方法,请帮助我修复简单但错误的算法相关的知识,希望对你有一定的参考价值。
我在一个非常简单的问题上未能通过代码测试。但是,即使提交了错误的解决方案,我也无法发现我的逻辑出了什么问题。我想从这次失败中学习,以便下次可以做得更好,但是没有在线解决此问题的方法。
[如果有人看到我的逻辑问题,可以让我知道吗?如果这是问这个问题的错误地方,请告诉我。
我通过了2/8个测试用例,但是失败的有大量输入或无法调试的隐藏输入。我的逻辑似乎适用于我可以手工找出的情况。
下面我的解决方案的代码:
public static int efficientJanitor(List<Float> weight)
int trips = 0;
int currIndex = 0;
float currWeight = 0;
//Loop until we hit end of List
while (currIndex < weight.size())
System.out.println("currIndex weight is: " + weight.get(currIndex));
currWeight = currWeight + weight.get(currIndex);
//If we still have room in the current bag
if (currWeight < 3.00)
currIndex++;
//We have no more room in the bag, increment trips, DONT increment
//currIndex so that we add weight at currIndex
//in next loop's iteration.
else if (currWeight >= 3.00)
trips++;
System.out.println("Trips is: " + trips);
currWeight = 0;
System.out.println("currWeight is: " + currWeight);
//Possible to have another bag left after while loop terminates,
//since loop could end without handling any
//remaining weight
if (currWeight >= 1.01 && currWeight <= 3.00)
trips++;
return trips;
答案
似乎您正在使用greedy算法失败,例如,在这种情况下:[1.3 3 1.3 3]
给出4次旅行,而3次可能。
尝试对重量列表进行排序。然后为最小的项目找到最大的配对项目。重复第二项,依此类推。 (双索引方法在这里看起来不错)
所以[1.1 1.4 1.45 1.5 1.9 2 2.5]
给出对1.1+1.9
和1.4 +1.5
以上是关于失败了一个简单的HackerRank问题,没有在线学习的方法,请帮助我修复简单但错误的算法的主要内容,如果未能解决你的问题,请参考以下文章
Python Hackerrank挑战给出了〜stdout没有响应〜错误