<p>最近,<em><a href="https://www.hackerrank.com/skills-verification/problem_solving" rel="nofollow noreferrer">HackerRank</a></em>推出了自己的认证。他们提供的测试包括“解决问题”。测试包含两个问题;他们给你90分钟来解决这些问题。由于我缺乏经验,我失败了,因为我花了更长的时间</p>
<p>具体地说,我在大约30分钟内为第一个问题(<em>filled orders</em>,见下文)找到了解决方案,并花了剩余的时间尝试调试它。它的问题不是解决方案不起作用,而是它只对一些测试用例起作用</p>
<p><strong>在14个测试用例中,解决方案对7个(包括所有打开的和一堆关闭的)有效,<strong>对其余7个(所有关闭的)无效。关闭意味着输入数据和预期输出不可用。(这是有道理的,因为那里的一些列表包含250K+个元素。)</p>
<p>但它让我发疯;我想不出它有什么问题。我试着把print语句放得到处都是,但我得到的唯一结果是,<em>1太多的元素被添加到列表中</em>-因此,最后一个<code>if</code>语句(删除最后添加的元素),但没有任何区别,所以可能是错误的</p>
<p>问题是:</p>
<blockquote>
<p>A widget manufacturer is facing unexpectedly high demand for its new product,. They would like to satisfy as many customers as possible. Given a number of widgets available and a list of customer orders, what is the maximum number of orders the manufacturer can fulfill in full?</p>
<p>Function Description</p>
<p>Complete the function filledOrders in the editor below. The function must return a single integer denoting the maximum possible number of fulfilled orders.</p>
<p>filledOrders has the following parameter(s):</p>
<p> order : an array of integers listing the orders</p>
<p> k : an integer denoting widgets available for shipment</p>
<p>Constraints</p>
<p>1 ≤ n ≤ 2 x 105</p>
<p>1 ≤ order[i] ≤ 109</p>
<p>1 ≤ k ≤ 109</p>
<p>Sample Input For Custom Testing</p>
<p>2</p>
<p>10</p>
<p>30</p>
<p>40</p>
<p>Sample Output</p>
<p>2</p>
</blockquote>
<p>这是我的功能:</p>
<pre><code>def filledOrders(order, k):
total = k
fulf = []
for r in order:
if r <= total:
fulf.append(r)
total -= r
else:
break
if sum(fulf) > k:
fulf.pop()
return len(fulf)
</code></pre>