问题背景
给你一个长度为 n n n 的整数数组 n u m s nums nums,请你返回 n u m s nums nums 中最 接近 0 0 0 的数字。如果有多个答案,请你返回它们中的 最大值 。
数据约束
- 1 ≤ n ≤ 1000 1 \le n \le 1000 1≤n≤1000
- − 1 0 5 ≤ n u m s [ i ] ≤ 1 0 5 -10 ^ 5 \le nums[i] \le 10 ^ 5 −105≤nums[i]≤105
解题过程
维护最小差值 m i n D i f f minDiff minDiff,根据后续遇到的数组中元素的不同情况来更新结果即可。
具体实现
class Solution {public int findClosestNumber(int[] nums) {int res = Integer.MIN_VALUE;int minDiff = Integer.MAX_VALUE;for (int num : nums) {int abs = Math.abs(num);if (abs < minDiff) {res = num;} else if (abs == minDiff) {res = Math.max(res, num);}minDiff = Math.min(minDiff, abs);}return res;}
}