Question:codility Lesson17 MinAbsSum
My Answer:
def solution(A):
newA = [abs(i) for i in A]
totalsum = sum(newA)
#print(totalsum)
dic = {}
for ele in newA:
dic[ele] = dic.get(ele,0) + 1
reach = [0] + [-1] * (totalsum // 2)
for num in dic:
for numsum in range(totalsum // 2 + 1):
if reach[numsum] >= 0:
reach[numsum] = dic[num]
elif numsum >= num and reach[numsum - num] > 0:
reach[numsum] = reach[numsum - num] - 1
print(reach)
for ele in range(totalsum // 2,-1,-1):
if reach[ele] >= 0:
return totalsum - ele - ele
return 0

本文介绍了一个解决 Codility Lesson 17 中 MinAbsSum 问题的方法。通过计算绝对值总和并利用动态规划技巧寻找最小绝对值之和,文章详细展示了算法实现过程及其背后的逻辑。
383

被折叠的 条评论
为什么被折叠?



