leetcode-2966.划分数组并满足最大差限制
题目描述
解题思路
这里只需要注意每个子数组的大小都是3, 我一开始看成了3个子数组.....
然后每个子数组的最大差一定是排好序之后的最大值减去最小值,所以我们只需要先对整体进行排序,然后每三个一组,用最大值减最小值判断一下就好了。
代码
class Solution {
public:
vector<vector<int>> divideArray(vector<int>& nums, int k) {
ranges::sort(nums.begin(),nums.end());
vector<vector<int>> ret;int step = nums.size() / 3;int n = nums.size();for(int i = 0; i < n; i += 3){if(nums[i + 2] - nums[i] > k)return ret;}
ret.resize(step);for(int i = 0;i < step; i++){
ret[i].insert(ret[i].begin(),nums.begin() + (3 * i), nums.begin() + (3 * (i + 1)));}return ret;}
};