Skip to content

Commit 103e896

Browse files
solves can make arithmetic progression from sequence
1 parent 21adf34 commit 103e896

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@
380380
| 1486 | [XOR Operations in An Array](https://leetcode.com/problems/xor-operation-in-an-array) | [![Java](assets/java.png)](src/XOROperationInAnArray.java) | |
381381
| 1491 | [Average Salary Excluding the Minimum and Maximum Salary](https://leetcode.com/problems/average-salary-excluding-the-minimum-and-maximum-salary) | [![Java](assets/java.png)](src/AverageSalaryExcludingTheMinimumAndMaximumSalary.java) | |
382382
| 1496 | [Path Crossing](https://leetcode.com/problems/path-crossing) | [![Java](assets/java.png)](src/PathCrossing.java) | |
383-
| 1502 | [Can Make Arithmetic Progression From Sequence](https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence) | | |
383+
| 1502 | [Can Make Arithmetic Progression From Sequence](https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence) | [![Java](assets/java.png)](src/CanMakeArithmeticProgressionFromSequence.java) | |
384384
| 1507 | [Reformat Date](https://leetcode.com/problems/reformat-date) | | |
385385
| 1512 | [Number of Good Pairs](https://leetcode.com/problems/number-of-good-pairs) | | |
386386
| 1518 | [Water Bottles](https://leetcode.com/problems/water-bottles) | | |
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence/
2+
// T: O(n)
3+
// S: O(n)
4+
5+
import java.util.Arrays;
6+
import java.util.HashSet;
7+
import java.util.Set;
8+
9+
public class CanMakeArithmeticProgressionFromSequence {
10+
public boolean canMakeArithmeticProgression(int[] array) {
11+
final int a = Arrays.stream(array).min().getAsInt();
12+
final int l = Arrays.stream(array).max().getAsInt();
13+
if (a == l) return true;
14+
if ((l - a) % (array.length - 1) != 0) return false;
15+
final int d = (l - a) / (array.length - 1);
16+
Set<Integer> elements = new HashSet<>();
17+
for (int number : array) {
18+
if (elements.contains(number)) return false;
19+
if ((number - a) % d != 0)return false;
20+
elements.add(number);
21+
}
22+
return true;
23+
}
24+
}

0 commit comments

Comments
 (0)