糖逗 发表于 2020-7-24 21:53:33

C++刷LeetCode(1509. 三次操作后最大值与最小值的最小差)【数学】

题目描述:

给你一个数组 nums ,每次操作你可以选择 nums 中的任意一个元素并将它改成任意值。

请你返回三次操作后, nums 中最大值与最小值的差的最小值。



示例 1:

输入:nums =
输出:0
解释:将数组 变成 .
最大值与最小值的差为 2-2 = 0 。
示例 2:

输入:nums =
输出:1
解释:将数组 变成 。
最大值与最小值的差为 1-0 = 1 。
示例 3:

输入:nums =
输出:2
示例 4:

输入:nums =
输出:1


提示:

1 <= nums.length <= 10^5
-10^9 <= nums <= 10^9


class Solution {
public:
    int minDifference(vector<int>& nums) {
      if (nums.size() < 5) return 0;

      sort(nums.begin(), nums.end());

      int res = INT_MAX;
      for (int i = 0; i <= 3; i++) {
            res = min(res, nums - nums);
      }
      return res;
    }

};

参考链接:https://leetcode-cn.com/problems/minimum-difference-between-largest-and-smallest-value-in-three-moves/solution/minimum-difference-by-ikaruga/

糖逗 发表于 2020-7-24 21:54:04

智商不够是硬伤{:10_266:}
页: [1]
查看完整版本: C++刷LeetCode(1509. 三次操作后最大值与最小值的最小差)【数学】