题目
1、题目描述
- 给你一个整数数组 nums,和一个整数 k 。
在一个操作中,您可以选择 0 <= i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] + x ,其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i ,最多 只能 应用 一次 此操作。
nums 的 分数 是 nums 中最大和最小元素的差值。
在对 nums 中的每个索引最多应用一次上述操作后,返回 nums 的最低 分数 。
2、原题链接
解题报告
1、解题思路
(
1
)
(1)
(1) 找到最大最小值,比较两值的差与2k的关系。
2、解题方法
2、代码详解
int smallestRangeI(int* nums, int numsSize, int k){
int i, min, max, a, ret;
min = max = nums[0];
for(i = 0; i < numsSize; ++i){
a = nums[i];
min = min <= a ? min : a;
max = max >= a ? max : a;
}
ret = max - min - 2 * k;
return ret > 0 ? ret : 0;
}
总结
大水题