/** * [2966] Divide Array Into Arrays With Max Difference */ #include #include using namespace std; // submission codes start here class Solution { public: vector> divideArray(vector &nums, int k) { ranges::sort(nums); vector> result; bool flag = true; result.reserve(nums.size() / 3); for (int i = 0; i < nums.size(); i += 3) { if (nums[i + 2] - nums[i + 1] > k || nums[i + 1] - nums[i] > k || nums[i + 2] - nums[i] > k) { flag = false; break; } vector array = {nums[i], nums[i + 1], nums[i + 2]}; result.push_back(move(array)); } if (flag) { return result; } return {}; } }; // submission codes end TEST(P2966, Test1) { vector nums = {1, 3, 4, 8, 7, 9, 3, 5, 1}; vector> result = {{1, 1, 3}, {3, 4, 5}, {7, 8, 9}}; ASSERT_EQ(result, Solution().divideArray(nums, 2)); }