將整數的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