一个N
整数数组被分成两部分K
和N-K
元素,使得这两部分中元素之和之间的差值最大化。
TEST CASES
N=5, K=2
arr = [8 4 5 2 10]
O/P: 17 because (8+5+10) − (4+2) = 23 − 6 = 17.
N=8, K=3
arr= [1 1 1 1 1 1 1 1]
O/P: 2 because (1+1+1+1+1)-(1+1+1)=2
我要做的是首先对数组中的所有元素求和。然后,找到数组中最小K
元素的总和,并从第一个元素中减去后者的两倍。
def smallestKSum(arr,K):
# returns the sum of the smallest K now. in the array
arr.sort()
r=0
for i in range(K):
r=r+arr[i]
return r
N,K = map(int,raw_input().split())
arr = map(int,raw_input().split())
s = sum(arr)
print s-(2*smallestKSum(arr,K))
上述解决方案在上述测试用例上运行良好,但Wrong Solution
在我尝试提交时仍然显示。您可以在此链接中查看问题。
有什么我想念的吗?我可以在K
不对数组进行排序的情况下找到最小数目的总和吗?