※ 引述《oin1104 (是oin的说)》之铭言:
: 题目:
: 给你一串阵列
: 你可以对任意三个元素改成任意值
: 改完之后最大跟最小相差的最小值是多少
: 思路:
: 先sort
: 发现改中间的值没屁用
: 然后就可以只改最大最小的
: 要改成什么值根本不重要
: 然后要改大的小的哪边的呢
: 其实 把所有情况列出来 发现只有四种
: 所以直接试试看就可以了
: ```cpp
: class Solution {
: public:
: int minDifference(vector<int>& nums)
: {
: int len = nums.size();
: if(len <= 4)return 0 ;
: sort(nums.begin(),nums.end());
: int l = 0;
: int r = len-1;
: int res = INT_MAX;
: for(int i = 0 ; i < 4 ; i ++)
: {
: res = min(res,nums[r-i] - nums[l+3-i]);
: }
: return res;
: }
: };
: ```
思路:
差不多 其实就四种可能:最大-第四小 第二大-第三小 第三大-第二小 第四大-最小
你能改3个数 所以就选最小的 然后改掉其他三个
Python Code:
class Solution:
def minDifference(self, nums: List[int]) -> int:
if len(nums) <= 4:
return 0
nums.sort()
return min(b - a for a, b in zip(nums[:4], nums[-4:]))