@@ -0,0 +1,17 @@ | |||
use std::cmp::min; | |||
pub fn array_pair_sum(mut nums: Vec<i32>) -> i32 { | |||
let mut acc_sum = 0; | |||
nums.sort(); | |||
for chunk in nums.chunks(2) { | |||
if let [a, b] = chunk { | |||
acc_sum += min(a, b); | |||
} | |||
} | |||
acc_sum | |||
} | |||
pub fn main() { | |||
println!("Expected: 4"); | |||
println!("Got: {}", array_pair_sum(vec![1, 4, 3, 2])); | |||
} |
@@ -0,0 +1,13 @@ | |||
Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), ..., (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible. | |||
Example 1: | |||
Input: [1,4,3,2] | |||
Output: 4 | |||
Explanation: n is 2, and the maximum sum of pairs is 4 = min(1, 2) + min(3, 4). | |||
Note: | |||
n is a positive integer, which is in the range of [1, 10000]. | |||
All the integers in the array will be in the range of [-10000, 10000]. |
@@ -0,0 +1,5 @@ | |||
#!/bin/bash | |||
rustc main.rs | |||
./main | |||
rm main |