【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)!