自学内容网 自学内容网

【LeetCode】每日一题 2024_10_16 最小元素和最大元素的最小平均值(排序、模拟)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:最小元素和最大元素的最小平均值

连续两天的简单题了,我有预感,明天的每日一题估计要来大的了

代码与解题思路

今天的题目算是标准的简单模拟题, 需要能力:懂语言的语法+细心读题即可。题目是这样描述的:

1、从 nums 中移除最小的元素 和 最大的元素。

2、将 (minElement + maxElement) / 2 加入到 averages 中。

3、返回 averages 中的最小元素。

解题思路:

问:如何找到最大元素?答:排序后找数组头尾即可。

问:如何返回 averages 中的最小元素。答:只需要返回一个最小元素,那直接用 ans 灵活维护一个当前的最小值直接返回即可。

func minimumAverage(nums []int) float64 {
    slices.Sort(nums)
    ans := math.MaxInt
    i, j := 0, len(nums)-1
    for i < j {
        ans = min(ans, nums[i]+nums[j])
        i++
        j--
    }
    return float64(ans)/2
}

我这段代码用的是 i,j 作为头尾指针找到排序数组的最大最小值,其实也可以只用一个指针 i 来实现:

func minimumAverage(nums []int) float64 {
    slices.Sort(nums)
    ans := math.MaxInt
    for i, n := 0, len(nums); i < n/2; i++ {
        ans = min(ans, nums[i]+nums[n-1-i])
    }
    return float64(ans) / 2
}

n - 1 代表的是尾指针,再 - i 就能和 i 一样往数组中间移动了。

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


原文地址:https://blog.csdn.net/Locky136/article/details/142980570

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!