当前位置: 首页 > news >正文

海外网站建设推广优秀创意网站

海外网站建设推广,优秀创意网站,重庆项目经理在建项目查询,小程序直播开发【LetMeFly】908.最小差值 I&#xff1a;思维&#xff08;遍历&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/smallest-range-i/ 给你一个整数数组 nums&#xff0c;和一个整数 k 。 在一个操作中&#xff0c;您可以选择 0 < i < nums.length 的…

title

【LetMeFly】908.最小差值 I:思维(遍历)

力扣题目链接:https://leetcode.cn/problems/smallest-range-i/

给你一个整数数组 nums,和一个整数 k

在一个操作中,您可以选择 0 <= i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] + x ,其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i ,最多 只能 应用 一次 此操作。

nums 的 分数 是 nums 中最大和最小元素的差值。 

在对  nums 中的每个索引最多应用一次上述操作后,返回 nums 的最低 分数

 

示例 1:

输入:nums = [1], k = 0
输出:0
解释:分数是 max(nums) - min(nums) = 1 - 1 = 0。

示例 2:

输入:nums = [0,10], k = 2
输出:6
解释:将 nums 改为 [2,8]。分数是 max(nums) - min(nums) = 8 - 2 = 6。

示例 3:

输入:nums = [1,3,6], k = 3
输出:0
解释:将 nums 改为 [4,4,4]。分数是 max(nums) - min(nums) = 4 - 4 = 0。

 

提示:

  • 1 <= nums.length <= 104
  • 0 <= nums[i] <= 104
  • 0 <= k <= 104

解题方法:遍历

这道题应该如何思考呢?如何将变化后数组中最大值和最小值之差尽可能地小?当然是“大的数尽可能往小的变”、“小的数尽可能往大的变”。

  • 如果 k k k很小,那么最大的数 M M M最多减小到 M − k M-k Mk,最小的数 m m m最多增加到 m + k m+k m+k,最终的最小差值为 M − m − 2 ∗ k M-m-2*k Mm2k
  • 如果 k k k足够大 2 k ≥ M − m 2k\geq M-m 2kMm,那么所有的数都可以变成相同的数,最终最小差值为 0 0 0

因此答案为 max ⁡ { 0 , max ⁡ ( n u m s ) − min ⁡ ( n u m s ) − 2 k } \max\{0, \max(nums)-\min(nums)-2k\} max{0,max(nums)min(nums)2k}

  • 时间复杂度 O ( l e n ( n u m s ) ) O(len(nums)) O(len(nums))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
public:int smallestRangeI(vector<int>& nums, int k) {int M = *max_element(nums.begin(), nums.end());int m = * min_element(nums.begin(), nums.end());return max(0, M - m - 2 * k);}
};
Go
package mainimport "slices"func smallestRangeI(nums []int, k int) int {return max(0, slices.Max(nums) - slices.Min(nums) - 2 * k)
}
Java
class Solution {public int smallestRangeI(int[] nums, int k) {int M = nums[0], m = nums[0];for (int t : nums) {M = Math.max(M, t);m = Math.min(m, t);}return Math.max(0, M - m  - 2 * k);}
}
Python
from typing import Listclass Solution:def smallestRangeI(self, nums: List[int], k: int) -> int:return max(0, max(nums) - min(nums) - 2 * k)

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/143112464

http://www.yayakq.cn/news/511263/

相关文章:

  • 电子商务网站开发教程书内代码网站后期运营方案步骤
  • wordpress建站平台带后台的网站模板下载
  • 去除 做网站就用建站之星工程技术
  • 网站维护一般多长时间网页设计思路说明200字
  • 特色企业网站wordpress 去除图片
  • 公司网站发展规划书wordpress 调用小工具栏
  • 怎样注册自己的货运网站线上购物网站开发
  • 如何将网站排名做高详情页模板下载
  • 如何在电脑上建设网站网页风格设计
  • 宜春做网站的婚庆公司收费价格表
  • asia域名的网站编程课程
  • 哪个网站建设平台支持花呗分期长沙专业网站建设.
  • 平台网站做数据维护需要多久河南郑州静默管理
  • 怎么建立一个网站卖东西wordpress 没有中文
  • 可以悬赏做任务的叫什么网站舆情网站推荐
  • 东营网站的优化网站的建设建议
  • 综合网站设计平面设计接单的网站
  • 什么系统做购物网站好唐山网站建设唐山
  • 网站后台使用什么做的套网站模板软件
  • wordpress获取文章链接地址永康新站优化
  • 惠州免费建站模板做网站 视频加载太慢
  • 比58同城做的好的网站wordpress安装后输入什么域名
  • 开发网站app公司开发一个网站做爬虫
  • 开一家软件开发公司需要什么邢台seo
  • 国外做电商网站分销工具
  • 厦门本地网站河北建筑培训网登录
  • 百度快照和做网站有关系吗网址你懂我意思正能量不用下载
  • 公司如何建设一个网站网站qq临时会话
  • 齐大胜请于果做网站是第几集秦皇岛找一家能建网站的公司
  • 阿里云 做网站企业网站建设验收