leetcode
100342. 最小元素和最大元素的最小平均值

问题描述

LeetCode 100342. 最小元素和最大元素的最小平均值 (opens in a new tab),难度简单

你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums,其中 n 为偶数。

你需要重复以下步骤 n / 2 次:

  • nums 中移除 最小 的元素 minElement最大 的元素 maxElement
  • (minElement + maxElement) / 2 加入到 averages 中。

返回 averages 中的 最小 元素。

示例 1

输入: nums = [7,8,3,4,15,13,4,1]
输出: 5.5
解释:
	步骤	nums	               averages
	0	 [7,8,3,4,15,13,4,1]	[]
	1	 [7,8,3,4,13,4]	        [8]
	2	 [7,8,4,4]	            [8,8]
	3	 [7,4]	                [8,8,6]
	4	 []	                    [8,8,6,5.5]
返回 averages 中最小的元素,即 5.5。

示例 2

输入: nums = [1,9,8,3,10,5]
输出: 5.5
解释:
	步骤	nums	               averages
	0	 [1,9,8,3,10,5]			[]
	1	 [9,8,3,5]	        	[5.5]
	3	 [8,5]	            	[5.5,6]
	4	 []	                    [5.5,6,6.5]

示例 3

输入: nums = [1,2,3,7,8,9]
输出: 5.0
解释:
	步骤	nums	               averages
	0	 [1,2,3,7,8,9]			[]
	1	 [2,3,7,8]	        	[5]
	3	 [3,7]	            	[5,5]
	4	 []	                    [5,5,5]

提示:

  • 2 <= n == nums.length <= 50
  • n 为偶数。
  • 1 <= nums[i] <= 50

题解

排序

解题思路:排序后取每次取数组首尾节点,求其平均数。

Solution.java
class Solution {
    public double minimumAverage(int[] nums) {
        double result = Integer.MAX_VALUE;
        // 排序
        Arrays.sort(nums);
        // 循环长度的 1/2 次
        for (int i = 0; i < nums.length / 2; ++i) {
            result = Math.min((double) (nums[i] + nums[nums.length - 1 - i]) / 2, result);
        }
        return result;
    }
}