每日一题|910.最小差值II|数组排序思路、单调性

devtools/2024/10/22 5:44:04/

在这里插入图片描述

显然,较小的值增加,较大的值减小,能够得到较小的差值。

为此,我们用一个i把当前的排序后的数组分成两个部分,i以前的部分是较小值,i以后是较大值。

前一个部分增加k,后一个部分减小k。我们思考更新后的数组的最大、最小值来自哪里。

新的最大值只能来自原数组的最大值(排序后的最后一个数字)-k,或者i以前的部分(包括i)的最大值 + k。因为i以后的值都减小k,不可能比原最大值-k还要大。

new_max = max(ori_max - k, nums[i] + k) // nums[i]是排序后数组i以前部分中最大的

同理,我们可以得到新的最小值:

new_min = min(ori_min + k, nums[i + 1] - k) // nums[i + 1]是i以后部分中最小的

所以,只需要遍历一次nums,就可以得到最小的差值

res = min(res, new_max - new_min)

class Solution:def smallestRangeII(self, nums: List[int], k: int) -> int:nums.sort()min_, max_ = nums[0], nums[-1]res = max_ - min_for i in range(len(nums) - 1):a, b = nums[i], nums[i+1]res = min(res, max(nums[i] + k, max_ - k) - min(nums[i+1] - k, min_ + k))return res


http://www.ppmy.cn/devtools/127746.html

相关文章

移动网络知识

一、3G网络 TD-SCDMA(时分同步码分多址接入)、WCDMA(宽带码分多址)和CDMA2000三种不同的3G移动通信标准 TD-SCDMA(时分同步码分多址接入):中国自主开发的一种3G标准主要用于国内市场&#xff…

VAS1086Q奇力LED驱动芯片升降压线性车规认证AEC-Q100

VAS1086Q 可编程恒流调节器在汽车照明中的应用与技术分析 随着LED技术在汽车照明和工业照明中的广泛应用,对LED驱动电路的要求也日益提高。为了满足这些需求,VAS1086Q作为一款可编程恒流调节器,凭借其宽输入电压范围、精准电流调节以及多重保…

Python网络请求库requests的10个基本用法

大家好!今天我们要聊聊Python中非常实用的一个库——requests。这个库让发送HTTP请求变得超级简单。无论你是想抓取网页数据还是测试API接口,requests都能派上大用场。下面我们就一起来看看如何使用requests完成一些常见的任务。 引言 随着互联网技术的…

142 环形链表II

解题思路: \qquad 之前在 环形链表I 中讲过利用快慢指针判断链表是否有环,当快慢指针相等时,链表中存在环。但环形链表II在其基础上,额外需要找到环的第一个节点,可以在快慢指针相遇的基础上,进一步分析。…

ckad准备

应用程序设计和构建–20% 应用部署 - 20% 应用观察和维护 - 15% 应用环境、配置与安全 - 25% 服务与网络 - 20% 应用程序设计和构建–20% l 定义、构建和修改容器鏡像 l 了解Jobs 和 CronJobs l 了解多容器Pod设计模式(例如si…

pipeline开发笔记

pipeline开发笔记 jenkins常用插件Build Authorization Token Root配置GitLab的webhooks(钩子)配置构建触发器--示例 piblish over sshBlue OceanWorkspace Cleanup PluginGit插件PipelineLocalization: Chinese (Simplified) --中文显示Build Environment Plugin 显示构建过程…

Transformer(Vit+注意力机制)

文献基本信息: Encoder-Decoder: Transformer的结构: 输入编码器解码器输出 Transformer的工作流程: 获取输入句子的每一个单词的表示向量X,X由单词的embedding(embedding是一种将高维特征映射到低维的技…