Problem
You are given an integer array nums of size n where n is a multiple of 3 and a positive integer k.
Divide the array nums into n / 3 arrays of size 3 satisfying the following condition:
The difference between any two elements in one array is less than or equal to k.
Return a 2D array containing the arrays. If it is impossible to satisfy the conditions, return an empty array. And if there are multiple answers, return any of them.
Intuition
That’s this a easy version of Leetcode2616. We can sort the array first and keep the track of an ‘Window’ which contains 3 adjacent elements. If nums[i+2] - nums[i] is greater than k, we can just return an empty array. Since we always get the minimum difference, if current array do not satisfy the threshold, it’s impossible to exist a another optimal solution.
COOOOOOOOOOOOODING
1 | class Solution { |