【C语言刷力扣】910.最小差值 ||

题目:

解题思路;

由于需要对数组中的每一个进行 +k-k 的操作,这时要求最小差值,即对较大的数 -k 对较小的数 + k

需要先对数组进行排序,再枚举对元素的操作。

  • nums [0]nums[i - 1] 的数进行 +k
  • nums [i]nums[numsSize - 1] 的数进行 - k

此时最大数是 nums[i - 1] 或者 nums[numsSize - 1]

最小数是 nums[0] 或者 nums [i]

时间复杂度:

空间复杂度:

复制代码
#define MAX(a,b) (a > b) ? a : b;
#define MIN(a,b) (a < b) ? a : b;

int cmp(const void* a, const void* b) {
    return *(int*)a - *(int*)b;
} 

int smallestRangeII(int* nums, int numsSize, int k) {
    qsort(nums, numsSize, sizeof(int), cmp);
    int max, min;
    int ans = nums[numsSize - 1] - nums[0];
    for (int i = 1; i < numsSize; i++) {
        max = MAX(nums[i-1] + k, nums[numsSize-1] - k);
        min = MIN(nums[0] + k, nums[i] - k);
        ans = MIN(ans, max - min);
    }
    return ans;
}
相关推荐
ArturiaZ2 分钟前
【day57】
开发语言·c++·算法
CoovallyAIHub3 分钟前
Energies | 8版YOLO对8版Transformer实测光伏缺陷检测,RF-DETR-Small综合胜出
深度学习·算法·计算机视觉
幽灵诶4 分钟前
指针与其运用
c语言
Emberone11 分钟前
排序:万物皆有序
算法·排序算法
其实秋天的枫12 分钟前
2025年12月英语六级真题及答案解析完整版(第一、二、三套全PDF)
经验分享·算法
2401_8747325318 分钟前
C++并发编程中的死锁避免
开发语言·c++·算法
2301_7923082520 分钟前
C++编译期数学计算
开发语言·c++·算法
hetao173383721 分钟前
2025-03-13~22 hetao1733837 的刷题记录
c++·算法
sqyno1sky32 分钟前
C++中的契约编程
开发语言·c++·算法
优化控制仿真模型44 分钟前
2026年最新驾考科目一考试题库2309道全。电子版pdf
经验分享·算法·pdf