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

前言

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

LeetCode 启动!

题目:最小差值 I

代码与解题思路

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

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

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

以下是代码:

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

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

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

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

小聊两句

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

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

可以和我刷一辈子的每日一题吗?

一题一题,积累起来就是一辈子。

相关推荐
moshuying2 小时前
块扩散 + GDN 改造:Clover 把「并行生成」塞进了 Agent 的长上下文里
前端·算法
没落之王2 小时前
历史系统建模:宋初太祖太宗「再立天庭」秩序重构推演
人工智能·算法·重构
INGNIGHT3 小时前
91 · 最小调整代价(序列dp)
数据结构·算法·leetcode
moshuying3 小时前
扩散模型开始写代码、开网页了:350 亿参数,速度比 Jev 快一倍
前端·算法
小超人诞生日记3 小时前
C++ 异常机制详解:从抛出捕获到异常安全
c++·算法
labuladong4 小时前
机器学习&神经网络 系列教程上线
神经网络·算法·机器学习
xiangyun614 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl
学习论之费曼学习法4 小时前
无人值守AI内容矩阵实战(8):标题 A/B 实验的 6 个工程实现细节,隔日对比与自动判胜
人工智能·python·算法·矩阵·自动化·a/b测试·内容矩阵
Carl_奕然4 小时前
【机器视觉】最强算法之:3D高斯泼溅(3D Gaussian Splatting)
人工智能·python·算法·目标检测·计算机视觉·3d
w_zero_one4 小时前
算法--桶思想
java·开发语言·算法