20250618 finished.

This commit is contained in:
jackfiled 2025-06-18 14:06:08 +08:00
parent c0cd44f606
commit f438304378
Signed by: jackfiled
GPG Key ID: DEF448811AE0286D

View File

@ -0,0 +1,51 @@
/**
* [2966] Divide Array Into Arrays With Max Difference
*/
#include <bits/stdc++.h>
#include <gtest/gtest.h>
using namespace std;
// submission codes start here
class Solution
{
public:
vector<vector<int>> divideArray(vector<int> &nums, int k)
{
ranges::sort(nums);
vector<vector<int>> 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<vector<int>> result = {{1, 1, 3}, {3, 4, 5}, {7, 8, 9}};
ASSERT_EQ(result, Solution().divideArray(nums, 2));
}