当前位置: 首页 > article >正文

【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 一样往数组中间移动了。

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

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


http://www.kler.cn/news/356748.html

相关文章:

  • Android 开发 TabLayout 自定义指示器长度
  • 深入学习二叉树(BinaryTree)(纯小白进)
  • SpringBoot智能推荐:健康生活新体验
  • Lua表(Table)
  • MySQL程序介绍<一>
  • 侏罗纪公园不再是电影了吗?
  • 快速了解K8S几种网络实现
  • 代码复现(五):GCPANet
  • 高数导数积分知识点归纳
  • 使用Javascript实现一个Cron表达式的函数
  • 【Tinymce】富文本编辑器在vue项目中的使用;引入付费格式刷,上传视频、图片
  • IE11删除hao360主页
  • element plus的el-select分页
  • 图论day62|拓扑排序理论基础、117.软件构建(卡码网)、最短路径之dijkstra理论基、47.参加科学大会(卡码网 第六期模拟笔试)
  • 【C++篇】类与对象的秘密(上)
  • MongoDB 如何做mapreduce
  • 【用大模型提示工程处理NLP任务】
  • 2024年微信小程序毕业设计如何选题,200 道新颖微信小程序题目推荐,持续更新
  • 2024.10.14 软考学习笔记
  • apache设置禁止直接访问tp3.2目录