【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;
}
相关推荐
玖剹6 分钟前
递归练习题(四)
c语言·数据结构·c++·算法·leetcode·深度优先·深度优先遍历
做人不要太理性6 分钟前
【Linux系统】线程的同步与互斥:核心原理、锁机制与实战代码
linux·服务器·算法
向阳逐梦16 分钟前
DC-DC Buck 电路(降压转换器)全面解析
人工智能·算法
Mz122120 分钟前
day04 小美的区间删除
数据结构·算法
_OP_CHEN28 分钟前
算法基础篇:(十九)吃透 BFS!从原理到实战,解锁宽度优先搜索的核心玩法
算法·蓝桥杯·bfs·宽度优先·算法竞赛·acm/icpc
小猪咪piggy37 分钟前
【算法】day 20 leetcode 贪心
算法·leetcode·职场和发展
forestsea1 小时前
现代 JavaScript 加密技术详解:Web Crypto API 与常见算法实践
前端·javascript·算法
张洪权1 小时前
bcrypt 加密
算法
快手技术1 小时前
视频理解霸榜!快手 Keye-VL 旗舰模型重磅开源,多模态视频感知领头羊
算法
骑自行车的码农2 小时前
🍂 React DOM树的构建原理和算法
javascript·算法·react.js