前言
每天和你一起刷 LeetCode 每日一题~
LeetCode 启动!
题目:leetcode.cn/problems/minimum-average-of-smallest-and-largest-elements/description/?envType=daily-question&envId=2024-10-16" rel="nofollow">最小元素和最大元素的最小平均值
连续两天的简单题了,我有预感,明天的每日一题估计要来大的了
代码与解题思路
今天的题目算是标准的简单模拟题, 需要能力:懂语言的语法+细心读题即可。题目是这样描述的:
1、从 nums 中移除最小的元素 和 最大的元素。
2、将 (minElement + maxElement) / 2 加入到 averages 中。
3、返回 averages 中的最小元素。
解题思路:
问:如何找到最大元素?答:排序后找数组头尾即可。
问:如何返回 averages 中的最小元素。答:只需要返回一个最小元素,那直接用 ans 灵活维护一个当前的最小值直接返回即可。
func minimumAverage(nums []int) float64 {slices.Sort(nums)ans := math.MaxInti, j := 0, len(nums)-1for 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.MaxIntfor 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 一样往数组中间移动了。
每天进步一点点,我们明天不见不散~
可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。