欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【LeetCode】每日一题 2024_10_20 最小差值 I(模拟/数学/贪心)

【LeetCode】每日一题 2024_10_20 最小差值 I(模拟/数学/贪心)

2024/10/23 23:24:20 来源:https://blog.csdn.net/Locky136/article/details/143092075  浏览:    关键词:【LeetCode】每日一题 2024_10_20 最小差值 I(模拟/数学/贪心)

前言

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

LeetCode 启动!

题目:最小差值 I

代码与解题思路

今天的题目也比较简单,题目要求找到数组的最大值和最小值相减的最小值,每个元素可以 +k 或者 -k,那最优的情况就是让最大值 -k,最小值 +k,转化一下就是让:最大值 - 最小值 - 2*k 就能得到题目想要的值。分类讨论一下可能出现的结果即可:

1、最大值 - 最小值 - 2*k <= 0,那就直接返回 0 即可

2、最大值 - 最小值 - 2*k > 0,那就直接返回这个结果

以下是代码:

func smallestRangeI(nums []int, k int) int {// 找最大值和最小值和差并与 k 比较即可mi, mx := math.MaxInt, math.MinIntfor _, v := range nums {mi = min(mi, v)mx = max(mx, v)}if mx - mi <= k * 2 {return 0}return mx - mi - k * 2
}

当时看完题目没多想就直接上手实现了,写完才想起来,求数组的最大最小元素这种需求,语言自带的包一般都有能直接使用的实现:

func smallestRangeI(nums []int, k int) int {return max(slices.Max(nums)-slices.Min(nums)-2*k, 0)
}   

原本的写法写了两分钟,一用上包,一行就搞定了

小聊两句

其实力扣每日一题的难度比较随机,经常出特别简单抑或是特别难的题目,所以刷力扣每日一题更重要的是帮助我们养成一个每天坚持刷题的习惯~

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com