Skip to main content

2239 - Find Closest Number to Zero (Easy)

https://leetcode.com/problems/find-closest-number-to-zero/

Problem Statement

Given an integer array nums of size n, return the number with the value closest to 0 in nums. If there are multiple answers, return the number with the largest value.

Example 1:

Input: nums = [-4,-2,1,4,8]
Output: 1
Explanation:
The distance from -4 to 0 is |-4| = 4.
The distance from -2 to 0 is |-2| = 2.
The distance from 1 to 0 is |1| = 1.
The distance from 4 to 0 is |4| = 4.
The distance from 8 to 0 is |8| = 8.
Thus, the closest number to 0 in the array is 1.

Example 2:

Input: nums = [2,-1,1]
Output: 1
Explanation: 1 and -1 are both the closest numbers to 0, so 1 being larger is returned.

Constraints:

  • 1 <= n <= 1000
  • -105 <= nums[i] <= 10^5

Approach 1:

If we sort the input and check if the absolute value is minimal, the answer would be found in the last round. However, it is not necessary to sort it here. We just need to check if the number is greater that answer or not.

Written by @wingkwong
class Solution {
public:
int findClosestNumber(vector<int>& nums) {
int ans = INT_MAX, mi = INT_MAX;
for (auto x : nums) {
int d = abs(x);
if (d < mi || (d == mi && x > ans)) {
mi = d;
ans = x;
}
}
return ans;
}
};