将整数的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
当我尝试提交。您可以在link处查看问题。
有什么,我失踪?我可以在没有对数组进行排序的情况下找到最小的K
nos的总和吗?
为什么在python中有切片时为'in范围(K)? – mishik
@mishik对不起我不擅长python。我刚刚发现他的错误 – banarun
使用这个:'为我在范围(K)' - >'为一个在ARR [:K]:r + = a' '为我在范围(nk)' - >'为a arr [K:]:s + = a' – mishik