解题思路
虽然是题目列在动态规划上面,但是还是想别的方法可不可以解。于是就有了下面的方案。
所有数字求绝对值,然后按从大到小排序。
设两个和sum1和sum2。
每次加一个值,若sum1>sum2,加到sum2上,否则加到sum1上。
代码
测试结果
首先,复杂度为O(N * max(abs(A))**2)
,符合题目要求。
通过了所有的正确性检验,针对[3,3,3,4,5]这样类似的测试用例作出上文中// Start
和// End
之间的改动。
但是性能检验时,第一个测试用例(medium1:medium random)出错了,其余都对。这个测试用例期望是0但是我的代码给了4。
由于是性能检验,所以也不会给出错在什么样的测试用例上,让人有点匪夷所思。感觉问题应该是出在和[3,3,3,4,5]这样的测试用例类似的问题上。
引用
Test results - Codility