leetcode:908. 最小差值 I

简介: leetcode:908. 最小差值 I

一、题目

二、函数原型

int smallestRangeI(int* nums, int numsSize, int k)

三、思路

本题题目有些绕口,但是无伤大雅。本质就是可以对数组中的每个元素进行加/减 k 的操作,然后求数组中的最大、最小元素的最小差值。

分为几种情况:

1.原数组中最大值和最小值的差值一半 小于等于 k,说明最大、最小元素可以通过加/减 k 的操作后相等,那么最大、最小元素的最小差值就是0

2.原数组中最大值和最小值的差值一半 大于 k,明最大、最小元素不可以通过加/减 k 的操作相等,那么最大、最小元素的最小差值就是 max - k - (min + k)

四、代码

int cmp(const void* e1,const void* e2)
{
    return *(int*)e1-*(int*)e2;
}
int smallestRangeI(int* nums, int numsSize, int k) {
    qsort(nums,numsSize,sizeof(int),cmp);//排序找到最大最小元素
    int min=nums[0];//最小元素
    int max=nums[numsSize-1];//最大元素
    if((float)(max-min)/2<=(float)k)
    {
        return 0;
    }
    else
    {
        return max-k-min-k;
    }
}


目录
相关文章
|
7月前
leetcode-2016:增量元素之间的最大差值
leetcode-2016:增量元素之间的最大差值
58 0
|
7月前
leetcode-6118:最小差值平方和
leetcode-6118:最小差值平方和
39 0
|
7月前
leetcode-1984:学生分数的最小差值
leetcode-1984:学生分数的最小差值
50 0
|
7月前
|
Go
golang力扣leetcode 2016.增量元素之间的最大差值
golang力扣leetcode 2016.增量元素之间的最大差值
40 0
|
Python
LeetCode 5881. 增量元素之间的最大差值
给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。
123 0
LeetCode 5854. 学生分数的最小差值
给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。
91 0
|
算法 索引
LeetCode——908. 最小差值 I
LeetCode——908. 最小差值 I
103 0
|
索引
LeetCode每日一题(14)——最小差值 I
最小差值I 1.题目 2.示例 3.思路 4.代码
214 0
【day05】LeetCode(力扣)每日一刷[1464. 数组中两元素的最大乘积][347. 前 K 个高频元素][2163. 删除元素后和的最小差值 ]
了解[1464. 数组中两元素的最大乘积][347. 前 K 个高频元素][2163. 删除元素后和的最小差值 ]。
114 0
【day05】LeetCode(力扣)每日一刷[1464. 数组中两元素的最大乘积][347. 前 K 个高频元素][2163. 删除元素后和的最小差值 ]
LeetCode每日一题题解:1984. 学生分数的最小差值
LeetCode每日一题题解:1984. 学生分数的最小差值