【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;
}
相关推荐
W23035765731 小时前
经典算法:最长上升子序列(LIS)深度解析 C++ 实现
开发语言·c++·算法
.Ashy.1 小时前
2026.4.11 蓝桥杯软件类C/C++ G组山东省赛 小记
c语言·c++·蓝桥杯
2401_892070981 小时前
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
c语言·数据结构·链栈
minji...2 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
语戚3 小时前
力扣 968. 监控二叉树 —— 贪心 & 树形 DP 双解法递归 + 非递归全解(Java 实现)
java·算法·leetcode·贪心算法·动态规划·力扣·
skywalker_113 小时前
力扣hot100-7(接雨水),8(无重复字符的最长子串)
算法·leetcode·职场和发展
bIo7lyA8v4 小时前
算法稳定性分析中的输入扰动建模的技术9
算法
CoderCodingNo4 小时前
【GESP】C++三级真题 luogu-B4499, [GESP202603 三级] 二进制回文串
数据结构·c++·算法
sinat_286945194 小时前
AI Coding 时代的 TDD:从理念到工程落地
人工智能·深度学习·算法·tdd