2025-01-24:最小元素和最大元素的最小平均值。用go语言,你有一

架构师课程 2025-01-24 21:04:38

2025-01-24:最小元素和最大元素的最小平均值。用go语言,你有一个空的浮点数数组 averages,以及一个包含偶数个整数的数组 nums。你需要执行以下步骤,重复 n/2 次:

1.从 nums 数组中找出并移除最小值 minElement 和最大值 maxElement。

2.计算这两个元素的平均值,即 (minElement + maxElement) / 2,并将其添加到 averages 中。

最后,返回 averages 数组中的最小值。

2 <= n == nums.length <= 50。

n 为偶数。

1 <= nums[i] <= 50。

输入: 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。

答案2025-01-24:

chatgpt[1]

题目来自leetcode3194。

大体步骤如下:

1.排序数组 nums: [1, 3, 4, 4, 7, 8, 13, 15]

2.初始化空数组 averages: []

3.进行迭代直到数组长度为 0:

3.1.第一次迭代(i = 0):

3.1.1.移除并记录 minElement = 1 和 maxElement = 15,更新 nums 为 [3, 4, 4, 7, 8, 13]

3.1.2.计算平均值 (1 + 15) / 2 = 8, 添加 8 到 averages: [8]

3.2.第二次迭代(i = 1):

3.2.1.移除并记录 minElement = 3 和 maxElement = 13,更新 nums 为 [4, 4, 7, 8]

3.2.2.计算平均值 (3 + 13) / 2 = 8, 添加 8 到 averages: [8, 8]

3.3.第三次迭代(i = 2):

3.3.1.移除并记录 minElement = 4 和 maxElement = 8,更新 nums 为 [4, 7]

3.3.2.计算平均值 (4 + 8) / 2 = 6, 添加 6 到 averages: [8, 8, 6]

3.4.第四次迭代(i = 3):

3.4.1.移除并记录 minElement = 4 和 maxElement = 7,更新 nums 为空 []

3.4.2.计算平均值 (4 + 7) / 2 = 5.5, 添加 5.5 到 averages: [8, 8, 6, 5.5]

4.返回 averages 中最小的元素,即 5.5

总的时间复杂度:

• 排序数组的时间复杂度为 O(n log n)。• 迭代直到数组为空需要 O(n/2) 的时间。

总的时间复杂度为 O(n log n)。

总的额外空间复杂度:

• 除了输入数组外,使用了常数级额外空间来存储临时变量和结果数组。

总的额外空间复杂度为 O(1)。

Go完整代码如下:package mainimport ( "fmt" "sort" "math")func minimumAverage(nums []int) float64 { sort.Ints(nums) res, n := math.MaxFloat64, len(nums) for i := 0; i < n / 2; i++ { res = min(res, float64(nums[i] + nums[n - 1 - i]) / 2) } return res;}func main() { nums := []int{7,8,3,4,15,13,4,1} result := minimumAverage(nums) fmt.Println(result)}

在这里插入图片描述

Rust完整代码如下:use std::cmp::min;fn minimum_average(nums: &mut Vec<i32>) -> f64 { nums.sort(); let mut res = f64::MAX; let n = nums.len(); for i in 0..(n / 2) { res = f64::min(res, (nums[i] as f64 + nums[n - 1 - i] as f64) / 2.0); } return res;}fn main() { let mut nums = vec![7, 8, 3, 4, 15, 13, 4, 1]; let result = minimum_average(&mut nums); println!("{}", result);}

在这里插入图片描述

Python完整代码如下:# -*-coding:utf-8-*-def minimum_average(nums): nums.sort() # 对数组进行排序 res = float('inf') # 初始化为无穷大 n = len(nums) for i in range(n // 2): average = (nums[i] + nums[n - 1 - i]) / 2 # 计算成对元素的平均值 res = min(res, average) # 更新最小值 return resif __name__ == "__main__": nums = [7, 8, 3, 4, 15, 13, 4, 1] result = minimum_average(nums) print(result) # 输出结果

在这里插入图片描述

引用链接

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP

0 阅读:0