| 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 |