SESO08 - Editorial

Problem Link

Problem Explanation

The task is to find the element in an array that has the smallest absolute difference from a given integer k. If there are multiple elements with the same minimum difference, the program should return the smallest of these elements.

Approach

To find the element in an array with the smallest absolute difference from a given integer k, we iterate through the array while keeping track of the minimum absolute difference (min_diff) and the corresponding element (result). For each element in the array, we calculate its absolute difference from k. If this difference is smaller than min_diff, or if the difference is equal but the element is smaller than the current result, we update min_diff and result accordingly. After traversing the entire array, result will hold the element with the smallest absolute difference from k, ensuring that if multiple elements have the same difference, the smallest one is returned. This approach efficiently finds the desired element with a time complexity of O(n).

Complexity Analysis

  • Time Complexity: The time complexity of this solution is O(n), where n is the number of elements in the array. This is because the array is traversed only once.

  • Space Complexity: The space complexity is O(1), as the algorithm uses only a few extra variables (min_diff and result), regardless of the input size.