opt: findClosestNumber

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-12-28 18:52:33 +08:00
parent 8545a3cbe6
commit 0e253ecb83

View File

@@ -750,24 +750,19 @@ class Utils {
} }
static int findClosestNumber(int target, List<int> numbers) { static int findClosestNumber(int target, List<int> numbers) {
int minDiff = 127; return switch (numbers.length) {
int? closestNumber; 0 => target,
try { 1 => numbers.first,
for (int number in numbers) { _ => numbers.reduce((a, b) {
int diff = target - number; int diff1 = (a - target).abs();
if (diff < 0) { int diff2 = (b - target).abs();
continue; return diff1 == diff2
} ? max(a, b)
if (diff < minDiff) { : diff1 < diff2
minDiff = diff; ? a
closestNumber = number; : b;
} }),
} };
} catch (_) {
} finally {
closestNumber ??= numbers.last;
}
return closestNumber;
} }
// 版本对比 // 版本对比