前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >2025-01-24:最小元素和最大元素的最小平均值。用go语言,你有一个空的浮点数数组 averages,以及一个包含偶数个整

2025-01-24:最小元素和最大元素的最小平均值。用go语言,你有一个空的浮点数数组 averages,以及一个包含偶数个整

作者头像
福大大架构师每日一题
发布2025-02-05 14:02:01
发布2025-02-05 14:02:01
3900
代码可运行
举报
运行总次数:0
代码可运行

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 = 1maxElement = 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 = 3maxElement = 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 = 4maxElement = 8,更新 nums 为 [4, 7]

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

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

3.4.1.移除并记录 minElement = 4maxElement = 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完整代码如下:

代码语言:javascript
代码运行次数:0
复制
package main

import (
    "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完整代码如下:

代码语言:javascript
代码运行次数:0
复制
use std::cmp::min;

fnminimum_average(nums: &mutVec<i32>) ->f64 {
    nums.sort();
    letmut res = f64::MAX;
    letn = nums.len();

    foriin0..(n / 2) {
        res = f64::min(res, (nums[i] asf64 + nums[n - 1 - i] asf64) / 2.0);
    }

    return res;
}

fnmain() {
    letmut nums = vec![7, 8, 3, 4, 15, 13, 4, 1];
    letresult = minimum_average(&mut nums);
    println!("{}", result);
}

Python完整代码如下:

代码语言:javascript
代码运行次数:0
复制
# -*-coding:utf-8-*-

defminimum_average(nums):
    nums.sort()  # 对数组进行排序
    res = float('inf')  # 初始化为无穷大
    n = len(nums)

    for i inrange(n // 2):
        average = (nums[i] + nums[n - 1 - i]) / 2# 计算成对元素的平均值
        res = min(res, average)  # 更新最小值

    return res

if __name__ == "__main__":
    nums = [7, 8, 3, 4, 15, 13, 4, 1]
    result = minimum_average(nums)
    print(result)  # 输出结果
引用链接

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
  • Python完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档