Skip to content

Commit ec8de56

Browse files
authored
2022-10-07 update: added "Asteroid Collision" (#127)
1 parent fcb0a35 commit ec8de56

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
573573
| 720. Longest Word in Dictionary | [Link](https://leetcode.com/problems/longest-word-in-dictionary/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/LongestWordInDictionary.java) |
574574
| 725. Split Linked List in Parts | [Link](https://leetcode.com/problems/split-linked-list-in-parts/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/SplitLinkedListInParts.java) |
575575
| 729. My Calendar I | [Link](https://leetcode.com/problems/my-calendar-i/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/MyCalendarI.java) |
576+
| 735. Asteroid Collision | [Link](https://leetcode.com/problems/asteroid-collision/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/AsteroidCollision.java) |
576577
| 739. Daily Temperatures | [Link](https://leetcode.com/problems/daily-temperatures/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/DailyTemperatures.java) |
577578
| 763. Partition Labels | [Link](https://leetcode.com/problems/partition-labels/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/PartitionLabels.java) |
578579
| 784. Letter Case Permutation | [Link](https://leetcode.com/problems/letter-case-permutation/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/LetterCasePermutation.java) |
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.smlnskgmail.jaman.leetcodejava.medium;
2+
3+
import java.util.Stack;
4+
5+
// https://leetcode.com/problems/asteroid-collision/
6+
public class AsteroidCollision {
7+
8+
private final int[] input;
9+
10+
public AsteroidCollision(int[] input) {
11+
this.input = input;
12+
}
13+
14+
public int[] solution() {
15+
Stack<Integer> stack = new Stack<>();
16+
for (int ast : input) {
17+
collision:
18+
{
19+
while (!stack.isEmpty() && ast < 0 && 0 < stack.peek()) {
20+
int peek = stack.peek();
21+
if (peek < -ast) {
22+
stack.pop();
23+
continue;
24+
} else if (peek == -ast) {
25+
stack.pop();
26+
}
27+
break collision;
28+
}
29+
stack.push(ast);
30+
}
31+
}
32+
int[] result = new int[stack.size()];
33+
for (int i = result.length - 1; i >= 0; i--) {
34+
result[i] = stack.pop();
35+
}
36+
return result;
37+
}
38+
39+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.smlnskgmail.jaman.leetcodejava.medium;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertArrayEquals;
6+
7+
public class AsteroidCollisionTest {
8+
9+
@Test
10+
public void defaultTest() {
11+
assertArrayEquals(
12+
new int[]{5, 10},
13+
new AsteroidCollision(new int[]{5, 10, -5}).solution()
14+
);
15+
}
16+
17+
}

0 commit comments

Comments
 (0)