首页 > 其他分享 >leetcode-908-easy

leetcode-908-easy

时间:2023-02-15 21:34:02浏览次数:37  
标签:min int max 908 nums num easy leetcode Math

Smallest Range I

You are given an integer array nums and an integer k.

In one operation, you can choose any index i where 0 <= i < nums.length and change nums[i] to 

nums[i] + x where x is an integer from the range [-k, k]. You can apply this operation at most once for each index i.

The score of nums is the difference between the maximum and minimum elements in nums.

Return the minimum score of nums after applying the mentioned operation at most once for each index in it.

Example 1:

Input: nums = [1], k = 0
Output: 0
Explanation: The score is max(nums) - min(nums) = 1 - 1 = 0.
Example 2:

Input: nums = [0,10], k = 2
Output: 6
Explanation: Change nums to be [2, 8]. The score is max(nums) - min(nums) = 8 - 2 = 6.
Example 3:

Input: nums = [1,3,6], k = 3
Output: 0
Explanation: Change nums to be [4, 4, 4]. The score is max(nums) - min(nums) = 4 - 4 = 0.
Constraints:

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

思路一:先找最大最小的两个数,然后查看两者的差距,最后计算差距和 k 的关系

    public int smallestRangeI(int[] nums, int k) {
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;

        for (int num : nums) {
        max = Math.max(max, num);
        min = Math.min(min, num);
        }

        int gap = max - min;
        return gap <= k * 2 ? 0 : gap - k * 2;
    }

标签:min,int,max,908,nums,num,easy,leetcode,Math
From: https://www.cnblogs.com/iyiluo/p/17124777.html

相关文章