在HackerRank上有人问了我这个问题,但我还没有找到一种不会超时的解决方案。我使用了PHP语言,规定时间为9秒...
这个问题的思路是,“售票摊位”上有一定数量的门票,比如9张。它们所卖出的每一张票的价格都是剩余门票的数量,因此第一张票的价格为$9,第二张为$8,以此类推...
你会得到两行数据,例如:
2 4
1 5
第一行包含两个数字:stall的数量和售出的票数。
第二行包含最初每个stall的票数列表,因此在这种情况下,stall 1有1张票,stall 2有5张票。
问题是:售出给定数量的门票可以获得的最大收益是多少?
在本例中,您从stall 2出售4张门票,价格为5 + 4 + 3 + 2 = $14。
那么如何解决它呢?我想出了两种方法,但都没有时间完成:
1.将stall编号(第二行)加载到数组中。通过该数组N次(售出的门票数)进行筛选,选择最大的元素,并将其添加到累加器中,将该数字减少。然后您会在汇聚器中得到总数。
2.将stall编号加载到一个数组中。对数组进行排序。倒序遍历该数组并执行以下操作:存储该数字(当前值),将其添加到累加器中,转到下一个值。如果它与之前的值(当前值)相同,则将其添加到累加器中,将其减去1,并继续执行。如果它不同,请返回数组末尾并重新开始。重复此过程N次(内部循环,而不是外部循环)。
问题:两者都无法解决。
有人能想出更好的解决方案吗?