// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;
contract ClosestToMean {
function findClosestToMean(int[] memory array) public pure returns (int closestNum) {
int n = int(array.length);
int sum = 0;
for(int i = 0; i < n; i++) {
sum += array[i];
}
// Initialize minimum difference and closest number
int min_diff = type(int).max;
closestNum = array[0];
// Iterate through array and update closest number
for(int i = 0; i < n; i++) {
// Compute absolute difference with scaled mean
int diff = abs(sum - n * array[i]);
// Update if difference is less
if(diff < min_diff) {
min_diff = diff;
closestNum = array[i];
}
}
}
// Helper function to compute absolute value
function abs(int x) internal pure returns (int) {
return x >= 0 ? x : -x;
}
}
Jun 27, 2023, 2:20 AM