【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;
}
相关推荐
额,不知道写啥。10 分钟前
P5314 ODT(毒瘤树剖)
数据结构·c++·算法
CHANG_THE_WORLD11 分钟前
深入指针5:回调函数与泛型排序
数据结构·算法
Once_day16 分钟前
GCC编译(4)构造和析构函数
c语言·c++·编译和链接
今儿敲了吗16 分钟前
24| 字符串
数据结构·c++·笔记·学习·算法
StandbyTime18 分钟前
C语言学习-菜鸟教程C经典100例-练习76
c语言
Wect28 分钟前
LeetCode 105. 从前序与中序遍历序列构造二叉树:题解与思路解析
前端·算法·typescript
StandbyTime30 分钟前
C语言学习-菜鸟教程C经典100例-练习77
c语言
小雨中_33 分钟前
2.5 动态规划方法
人工智能·python·深度学习·算法·动态规划
智算菩萨1 小时前
【Python小游戏】基于Pygame的递归回溯迷宫生成与BFS寻路实战:从算法原理到完整游戏架构的深度解析
python·算法·pygame
测绘工程师1 小时前
【排序算法】冒泡排序
数据结构·算法·排序算法