整数の配列は、要素N
の 2 つの部分に分割され、これら 2 つの部分の要素の合計の差が最大になるようにします。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
後者の 2 倍を最初の要素から引きます。
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
そして、配列をソートせずに最小の数の合計を見つけることはできますか?