Leetcode908思路

为什么写这篇文章?

相信不少人在看官方的leetcode题解的时候,都遇到了不少困难。leetcode官方的题解,省略了不少细节。导致在读的时候非常难懂。所以,我在这里写出我对官方答案的理解和解读。希望可以帮助大家更好的理解官方的题解。

题目链接

leetcode908-最小差值

自己的解读

官方给出了两种情况,下面我们对这两种情况分别进行讨论:

  • maxNumminNum<=2k。那么可以将数组中所有的数改成相同的数,所以最后更改后数组的最大值和最小值是0。

在nums当中,除了了minNummaxNum,其他的数字一定介于两者之间,这是毋庸置疑的。而maxNum和minNum之间的差值不超过2k。而介于之间的数字也一定满足xminNum<=k并且maxNumx<=k。为什么呢?因为maxNumminNUm<=2k。也就是说minNummaxNum可以通过+k和-k来相互转换。所以,两个相隔最远的数字都可以通过k相互转换的,那么中间的数也肯定是可以的。 所以,数组中的所有的数都可以变成相同的数字。

  • 如果maxNumminNum>2k,那么更改后的数字的最低分数是maxNumminNum2k

maxNumminNum的最小差值为maxNumk(minNum+k)

1)更改后的数组的最低分数一定大于等于这个差值。
原因如下:

  • 如果更改后的数组,maxNum+kminNumk依然是为最大值和最小值,那么差值就是结果了。
  • 如果更改后的数组,maxNum+kminNumk其中一个不是最大值或者最小值,那么结果一定会被这个大。因为最大值和最小值的距离比他们的差值更远。

所以,更改后的数组的最低分数一定大于等于maxNumk(minNum+k)
2)更改后的数组的最低分数一定小于等于这个差值。
原因如下:

  • 如果说原来的数组的minNum,进行更改后为minNum+k,并且这个数字大于原来数组中的x,那么x一定可以通过k变成minNum+k
  • 如果说原来的数组的maxNum,进行更改后为maxNumk,并且这个数字小于原来数组中的x,那么x一定可以通过k变成maxNumk
    也就是说,原来数字的中的数字都可以区间[minNum+k,maxNumk]之间的整数。所以,更改后的最低分数一定小于等于这个差值。

既大于有小于,那么最低分数就是这个差值。

因此,当maxNumminNum>2k的时候,最低分数就是maxNumminNum2K

posted @   Lacio  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示