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])); | |||||
} |
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]. |
#!/bin/bash | |||||
rustc main.rs | |||||
./main | |||||
rm main |