diff --git a/src/problems/2966-divide-array-into-arrays-with-max-difference.cpp b/src/problems/2966-divide-array-into-arrays-with-max-difference.cpp new file mode 100644 index 0000000..aaa751f --- /dev/null +++ b/src/problems/2966-divide-array-into-arrays-with-max-difference.cpp @@ -0,0 +1,51 @@ +/** +* [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)); +} \ No newline at end of file