首页 > 其他分享 >Leetcode908思路

Leetcode908思路

时间:2022-10-27 19:46:13浏览次数:66  
标签:分数 maxNum 更改 minNum 差值 Leetcode908 数组 思路

为什么写这篇文章?

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

题目链接

leetcode908-最小差值

自己的解读

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

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

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

  • 如果\(maxNum - minNum > 2k\),那么更改后的数字的最低分数是\(maxNum - minNum - 2k\)。

\(maxNum\)和\(minNum\)的最小差值为\(maxNum - k - (minNum + k)\)。

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

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

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

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

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

因此,当\(maxNum - minNum > 2k\)的时候,最低分数就是\(maxNum-minNum-2K\)。

标签:分数,maxNum,更改,minNum,差值,Leetcode908,数组,思路
From: https://www.cnblogs.com/Thinkingbokeyuan/p/16831909.html

相关文章

  • uniapp热更新和整包更新思路
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助我们知道,在打包AndroidApp之前,我们需要先通过HX生成打包资源。如果是通过cli创建的项目,则通过以下命令生......
  • locust 嵌入测试平台 只用一个task实现请求多个接口的思路
    fromlocustimportTaskSet,taskfromlocustimportHttpUserasHttpLocustclassUserBehavior(TaskSet):defon_start(self):#当模拟用户开始执行Task......
  • Trino Worker 规避 OOM 思路
    背景Trino集群如果不做任何配置优化,按照默认配置上线,Master和Worker节点都很容易发生OOM。本文从Trino内存设计出发,分析Trino内存管理机制,到限制与优化内存分配......
  • SVM主题思路和代码实现
    之前学习的KNN算法属于直接将所有的训练图片数据化,根据图片的像素值进行判断,最简单的NN算法是用与待判断图片的差距最小(距离最近)的那张图片的类别当做此图片的类别,我们......
  • 实现页面布局的通用思路
    概述前端开发中,页面布局很多时候是通过css属性搭配特定结构的html标签实现的。常见的结构有:容器(container)、包裹容器(wrapper)、内部容器(inner),以及内容(content)......
  • 野火IM 社区版IM Server集群部署思路
    IMServer集群部署难点在于hazelcast本地缓存与集群缓存之间状态变更通知1.将hazelcast切换成jetcache二级缓存或多级缓存,我使用的是三级缓存 Caffeine+Redis+......
  • 记录一下docker的mysql容器exited(1)无法正常启动的解决思路
    一开始应该查看日志,该命令为:dockerlogs容器id查看到报错[ERROR][Entrypoint]:DatabaseisuninitializedandpasswordoptionisnotspecifiedYouneedtospecify......
  • DevOps|1024程序员节怎么做?介绍下我的思路
    1024,祝每个程序员小哥哥小姐姐节日快乐。因为在研发效能部门,我支持过几次1024程序员节的活动,所以经常有朋友问我1024程序员节怎么做,本篇就是简单介绍下我的思路,希望对......
  • rxjs Observable 设计原理背后的 Pull 和 Push 思路
    Observables顾名思义,是可以被观察的事务。在Rxjs的上下文里,Observable会随着时间的推移,在某个时间点产生数据。Observables可以:不停地(永远)产生值,比如interval操作......
  • 爬虫入门-写一个小爬虫的思路
    注释里面比较详细。点击查看代码#-*-codeing=utf-8-*-frombs4importBeautifulSoupimportrequestsimportcsv#准备URLurl="https://ssr1.scrape.cente......