rustgym/leetcode/
_1300_sum_of_mutated_array_closest_to_target.rs1struct Solution;
2
3impl Solution {
4 fn find_best_value(mut arr: Vec<i32>, mut target: i32) -> i32 {
5 arr.sort_unstable();
6 let n = arr.len();
7 let mut i = 0;
8 while i < n && target > arr[i] * (n - i) as i32 {
9 target -= arr[i];
10 i += 1;
11 }
12 if i == n {
13 return arr[n - 1];
14 }
15 let res = target / (n - i) as i32;
16 if (res + 1) * (n - i) as i32 - target < target - res * (n - i) as i32 {
17 res + 1
18 } else {
19 res
20 }
21 }
22}
23
24#[test]
25fn test() {
26 let arr = vec![4, 9, 3];
27 let target = 10;
28 let res = 3;
29 assert_eq!(Solution::find_best_value(arr, target), res);
30 let arr = vec![2, 3, 5];
31 let target = 10;
32 let res = 5;
33 assert_eq!(Solution::find_best_value(arr, target), res);
34 let arr = vec![60864, 25176, 27249, 21296, 20204];
35 let target = 56803;
36 let res = 11361;
37 assert_eq!(Solution::find_best_value(arr, target), res);
38}