如何从整数数组中提取绝对值最大的三个数(负数转为正数)?
提取整数数组中绝对值最大的三个数
需求说明
从整数数组中筛选出三个绝对值最大的数,输出结果按绝对值从大到小排列。示例:
输入:
int[] nums={3,5,8,1,2,0,-10,-20}
输出:{20,10,8}
代码实现
private List<Integer> largestThreeNums(int[] nums) { Arrays.sort(nums); int x = nums.length; return Arrays.asList(Math.abs(nums[x-1]), Math.abs(nums[x-2]), Math.abs(nums[x-3])); }
代码逻辑解释
- 先对数组做升序排序,示例数组排序后变为
[-20, -10, 0, 1, 2, 3, 5, 8] - 数组末尾的三个元素是原始数组中数值最大的三个(包含负数),通过
Math.abs()将它们转为绝对值,刚好满足"最大的负数转为正数"的要求 - 最终把这三个绝对值结果封装成List返回,顺序自然是从大到小排序的状态
内容的提问来源于stack exchange,提问作者Ahmed Khan
相关产品推荐
相关产品推荐

