Skip to content

Commit 1ebe39f

Browse files
authored
feat: add solutions to lc problem: No.2966 (#4435)
No.2966.Divide Array Into Arrays With Max Difference
1 parent b5a542b commit 1ebe39f

File tree

6 files changed

+295
-0
lines changed

6 files changed

+295
-0
lines changed

solution/2900-2999/2966.Divide Array Into Arrays With Max Difference/README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,111 @@ function divideArray(nums: number[], k: number): number[][] {
192192
}
193193
```
194194

195+
#### Swift
196+
197+
```swift
198+
class Solution {
199+
func divideArray(_ nums: [Int], _ k: Int) -> [[Int]] {
200+
var sortedNums = nums.sorted()
201+
var ans: [[Int]] = []
202+
203+
for i in stride(from: 0, to: sortedNums.count, by: 3) {
204+
if i + 2 >= sortedNums.count {
205+
return []
206+
}
207+
208+
let t = Array(sortedNums[i..<i+3])
209+
if t[2] - t[0] > k {
210+
return []
211+
}
212+
213+
ans.append(t)
214+
}
215+
216+
return ans
217+
}
218+
}
219+
```
220+
221+
#### Rust
222+
223+
```rust
224+
impl Solution {
225+
pub fn divide_array(mut nums: Vec<i32>, k: i32) -> Vec<Vec<i32>> {
226+
nums.sort();
227+
let mut ans = Vec::new();
228+
let n = nums.len();
229+
230+
for i in (0..n).step_by(3) {
231+
if i + 2 >= n {
232+
return vec![];
233+
}
234+
235+
let t = &nums[i..i+3];
236+
if t[2] - t[0] > k {
237+
return vec![];
238+
}
239+
240+
ans.push(t.to_vec());
241+
}
242+
243+
ans
244+
}
245+
}
246+
```
247+
248+
#### C#
249+
250+
```cs
251+
public class Solution {
252+
public int[][] DivideArray(int[] nums, int k) {
253+
Array.Sort(nums);
254+
List<int[]> ans = new List<int[]>();
255+
256+
for (int i = 0; i < nums.Length; i += 3) {
257+
if (i + 2 >= nums.Length) {
258+
return new int[0][];
259+
}
260+
261+
int[] t = new int[] { nums[i], nums[i + 1], nums[i + 2] };
262+
if (t[2] - t[0] > k) {
263+
return new int[0][];
264+
}
265+
266+
ans.Add(t);
267+
}
268+
269+
return ans.ToArray();
270+
}
271+
}
272+
```
273+
274+
#### Dart
275+
276+
```dart
277+
class Solution {
278+
List<List<int>> divideArray(List<int> nums, int k) {
279+
nums.sort();
280+
List<List<int>> ans = [];
281+
282+
for (int i = 0; i < nums.length; i += 3) {
283+
if (i + 2 >= nums.length) {
284+
return [];
285+
}
286+
287+
List<int> t = nums.sublist(i, i + 3);
288+
if (t[2] - t[0] > k) {
289+
return [];
290+
}
291+
292+
ans.add(t);
293+
}
294+
295+
return ans;
296+
}
297+
}
298+
```
299+
195300
<!-- tabs:end -->
196301

197302
<!-- solution:end -->

solution/2900-2999/2966.Divide Array Into Arrays With Max Difference/README_EN.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,111 @@ function divideArray(nums: number[], k: number): number[][] {
190190
}
191191
```
192192

193+
#### Rust
194+
195+
```rust
196+
impl Solution {
197+
pub fn divide_array(mut nums: Vec<i32>, k: i32) -> Vec<Vec<i32>> {
198+
nums.sort();
199+
let mut ans = Vec::new();
200+
let n = nums.len();
201+
202+
for i in (0..n).step_by(3) {
203+
if i + 2 >= n {
204+
return vec![];
205+
}
206+
207+
let t = &nums[i..i+3];
208+
if t[2] - t[0] > k {
209+
return vec![];
210+
}
211+
212+
ans.push(t.to_vec());
213+
}
214+
215+
ans
216+
}
217+
}
218+
```
219+
220+
#### C#
221+
222+
```cs
223+
public class Solution {
224+
public int[][] DivideArray(int[] nums, int k) {
225+
Array.Sort(nums);
226+
List<int[]> ans = new List<int[]>();
227+
228+
for (int i = 0; i < nums.Length; i += 3) {
229+
if (i + 2 >= nums.Length) {
230+
return new int[0][];
231+
}
232+
233+
int[] t = new int[] { nums[i], nums[i + 1], nums[i + 2] };
234+
if (t[2] - t[0] > k) {
235+
return new int[0][];
236+
}
237+
238+
ans.Add(t);
239+
}
240+
241+
return ans.ToArray();
242+
}
243+
}
244+
```
245+
246+
#### Swift
247+
248+
```swift
249+
class Solution {
250+
func divideArray(_ nums: [Int], _ k: Int) -> [[Int]] {
251+
var sortedNums = nums.sorted()
252+
var ans: [[Int]] = []
253+
254+
for i in stride(from: 0, to: sortedNums.count, by: 3) {
255+
if i + 2 >= sortedNums.count {
256+
return []
257+
}
258+
259+
let t = Array(sortedNums[i..<i+3])
260+
if t[2] - t[0] > k {
261+
return []
262+
}
263+
264+
ans.append(t)
265+
}
266+
267+
return ans
268+
}
269+
}
270+
```
271+
272+
#### Dart
273+
274+
```dart
275+
class Solution {
276+
List<List<int>> divideArray(List<int> nums, int k) {
277+
nums.sort();
278+
List<List<int>> ans = [];
279+
280+
for (int i = 0; i < nums.length; i += 3) {
281+
if (i + 2 >= nums.length) {
282+
return [];
283+
}
284+
285+
List<int> t = nums.sublist(i, i + 3);
286+
if (t[2] - t[0] > k) {
287+
return [];
288+
}
289+
290+
ans.add(t);
291+
}
292+
293+
return ans;
294+
}
295+
}
296+
```
297+
193298
<!-- tabs:end -->
194299

195300
<!-- solution:end -->
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
public class Solution {
2+
public int[][] DivideArray(int[] nums, int k) {
3+
Array.Sort(nums);
4+
List<int[]> ans = new List<int[]>();
5+
6+
for (int i = 0; i < nums.Length; i += 3) {
7+
if (i + 2 >= nums.Length) {
8+
return new int[0][];
9+
}
10+
11+
int[] t = new int[] { nums[i], nums[i + 1], nums[i + 2] };
12+
if (t[2] - t[0] > k) {
13+
return new int[0][];
14+
}
15+
16+
ans.Add(t);
17+
}
18+
19+
return ans.ToArray();
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
List<List<int>> divideArray(List<int> nums, int k) {
3+
nums.sort();
4+
List<List<int>> ans = [];
5+
6+
for (int i = 0; i < nums.length; i += 3) {
7+
if (i + 2 >= nums.length) {
8+
return [];
9+
}
10+
11+
List<int> t = nums.sublist(i, i + 3);
12+
if (t[2] - t[0] > k) {
13+
return [];
14+
}
15+
16+
ans.add(t);
17+
}
18+
19+
return ans;
20+
}
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
impl Solution {
2+
pub fn divide_array(mut nums: Vec<i32>, k: i32) -> Vec<Vec<i32>> {
3+
nums.sort();
4+
let mut ans = Vec::new();
5+
let n = nums.len();
6+
7+
for i in (0..n).step_by(3) {
8+
if i + 2 >= n {
9+
return vec![];
10+
}
11+
12+
let t = &nums[i..i + 3];
13+
if t[2] - t[0] > k {
14+
return vec![];
15+
}
16+
17+
ans.push(t.to_vec());
18+
}
19+
20+
ans
21+
}
22+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
func divideArray(_ nums: [Int], _ k: Int) -> [[Int]] {
3+
var sortedNums = nums.sorted()
4+
var ans: [[Int]] = []
5+
6+
for i in stride(from: 0, to: sortedNums.count, by: 3) {
7+
if i + 2 >= sortedNums.count {
8+
return []
9+
}
10+
11+
let t = Array(sortedNums[i..<i+3])
12+
if t[2] - t[0] > k {
13+
return []
14+
}
15+
16+
ans.append(t)
17+
}
18+
19+
return ans
20+
}
21+
}

0 commit comments

Comments
 (0)